Generate dart typedefs for C typedefs (#224)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index be98e9a..e8e031c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,39 @@
+# 4.0.0-dev.0
+- Added support for generating typedefs (_referred_ typedefs only).
+<table>
+<tr>
+<td>Example C Code</td>
+<td>Generated Dart typedef</td>
+</tr>
+<tr>
+<td>
+
+```C++
+typedef struct A{
+    ...
+} TA, *PA;
+
+TA func(PA ptr);
+```
+</td>
+<td>
+
+```dart
+class A extends ffi.Struct {...}
+typedef TA = A;
+typedef PA = ffi.Pointer<A>;
+TA func(PA ptr){...}
+```
+</td>
+</tr>
+</table>
+
+- All declarations that are excluded by the user are now only included if being
+used somewhere.
+- Improved struct/union include/exclude. These declarations can now be targetted
+by their actual name, or if they are unnamed then by the name of the first
+typedef that refers to them.
+
 # 3.1.0-dev.1
 - Users can now specify exact path to dynamic library in `llvm-path`.
 
diff --git a/README.md b/README.md
index 5a99aff..aa4ad94 100644
--- a/README.md
+++ b/README.md
@@ -36,11 +36,9 @@
     return _sum(a, b);
   }
 
-  late final _sum_ptr = _lookup<NativeFunction<_c_sum>>('sum');
-  late final _dart_sum _sum = _sum_ptr.asFunction<_dart_sum>();
+  late final _sum_ptr = _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32, ffi.Int32)>>('sum');
+  late final _sum = _sum_ptr.asFunction<int Function(int, int)>();
 }
-typedef _c_sum = Int32 Function(Int32 a, Int32 b);
-typedef _dart_sum = int Function(int a, int b);
 ```
 ## Using this package
 - Add `ffigen` under `dev_dependencies` in your `pubspec.yaml`.
@@ -250,6 +248,27 @@
   </td>
   </tr>
   <tr>
+    <td>typedefs</td>
+    <td>Filters for referred typedefs.<br><br>
+    Options -<br>
+    - Include/Exclude (referred typedefs only).<br>
+    - Rename typedefs.<br><br>
+    Note: Typedefs that are not referred to anywhere will not be generated.
+    </td>
+    <td>
+
+```yaml
+typedefs:
+  exclude:
+    # Typedefs starting with `p` are not generated.
+    - 'p.*'
+  rename:
+    # Removes '_' from beginning of a typedef.
+    '_(.*)': '$1'
+```
+  </td>
+  </tr>
+  <tr>
     <td>structs -> pack</td>
     <td>Override the @Packed(X) annotation for generated structs.<br><br>
     <i>Options - none, 1, 2, 4, 8, 16</i><br>
@@ -524,3 +543,16 @@
       - 'myFunc'
       - '.*' # Do this to expose all pointers.
 ```
+
+### How are Structs/Unions/Enums that are reffered to via typedefs handled?
+
+Named declarations use their own names even when inside another typedef.
+However, unnamed declarations inside typedefs take the name of the _first_ typedef
+that refers to them.
+
+### Why are some typedefs not generated?
+
+The following typedefs are not generated -
+- They are not referred to anywhere in the included declarations.
+- They refer to a struct/union having the same name as itself.
+- They refer to a boolean, enum, inline array, Handle or any unsupported type.
diff --git a/example/c_json/cjson_generated_bindings.dart b/example/c_json/cjson_generated_bindings.dart
index 2b9d0a8..d0fb894 100644
--- a/example/c_json/cjson_generated_bindings.dart
+++ b/example/c_json/cjson_generated_bindings.dart
@@ -43,9 +43,10 @@
   }
 
   late final _cJSON_Version_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Version>>('cJSON_Version');
-  late final _dart_cJSON_Version _cJSON_Version =
-      _cJSON_Version_ptr.asFunction<_dart_cJSON_Version>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function()>>(
+          'cJSON_Version');
+  late final _cJSON_Version =
+      _cJSON_Version_ptr.asFunction<ffi.Pointer<ffi.Int8> Function()>();
 
   void cJSON_InitHooks(
     ffi.Pointer<cJSON_Hooks> hooks,
@@ -56,9 +57,10 @@
   }
 
   late final _cJSON_InitHooks_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_InitHooks>>('cJSON_InitHooks');
-  late final _dart_cJSON_InitHooks _cJSON_InitHooks =
-      _cJSON_InitHooks_ptr.asFunction<_dart_cJSON_InitHooks>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<cJSON_Hooks>)>>(
+          'cJSON_InitHooks');
+  late final _cJSON_InitHooks = _cJSON_InitHooks_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON_Hooks>)>();
 
   ffi.Pointer<cJSON> cJSON_Parse(
     ffi.Pointer<ffi.Int8> value,
@@ -68,10 +70,11 @@
     );
   }
 
-  late final _cJSON_Parse_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Parse>>('cJSON_Parse');
-  late final _dart_cJSON_Parse _cJSON_Parse =
-      _cJSON_Parse_ptr.asFunction<_dart_cJSON_Parse>();
+  late final _cJSON_Parse_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>>('cJSON_Parse');
+  late final _cJSON_Parse = _cJSON_Parse_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_ParseWithOpts(
     ffi.Pointer<ffi.Int8> value,
@@ -85,11 +88,15 @@
     );
   }
 
-  late final _cJSON_ParseWithOpts_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ParseWithOpts>>(
-          'cJSON_ParseWithOpts');
-  late final _dart_cJSON_ParseWithOpts _cJSON_ParseWithOpts =
-      _cJSON_ParseWithOpts_ptr.asFunction<_dart_cJSON_ParseWithOpts>();
+  late final _cJSON_ParseWithOpts_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              cJSON_bool)>>('cJSON_ParseWithOpts');
+  late final _cJSON_ParseWithOpts = _cJSON_ParseWithOpts_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Pointer<ffi.Int8>>, int)>();
 
   ffi.Pointer<ffi.Int8> cJSON_Print(
     ffi.Pointer<cJSON> item,
@@ -99,10 +106,11 @@
     );
   }
 
-  late final _cJSON_Print_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Print>>('cJSON_Print');
-  late final _dart_cJSON_Print _cJSON_Print =
-      _cJSON_Print_ptr.asFunction<_dart_cJSON_Print>();
+  late final _cJSON_Print_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>>('cJSON_Print');
+  late final _cJSON_Print = _cJSON_Print_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<ffi.Int8> cJSON_PrintUnformatted(
     ffi.Pointer<cJSON> item,
@@ -112,11 +120,12 @@
     );
   }
 
-  late final _cJSON_PrintUnformatted_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_PrintUnformatted>>(
-          'cJSON_PrintUnformatted');
-  late final _dart_cJSON_PrintUnformatted _cJSON_PrintUnformatted =
-      _cJSON_PrintUnformatted_ptr.asFunction<_dart_cJSON_PrintUnformatted>();
+  late final _cJSON_PrintUnformatted_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<cJSON>)>>('cJSON_PrintUnformatted');
+  late final _cJSON_PrintUnformatted = _cJSON_PrintUnformatted_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<ffi.Int8> cJSON_PrintBuffered(
     ffi.Pointer<cJSON> item,
@@ -130,11 +139,12 @@
     );
   }
 
-  late final _cJSON_PrintBuffered_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_PrintBuffered>>(
-          'cJSON_PrintBuffered');
-  late final _dart_cJSON_PrintBuffered _cJSON_PrintBuffered =
-      _cJSON_PrintBuffered_ptr.asFunction<_dart_cJSON_PrintBuffered>();
+  late final _cJSON_PrintBuffered_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>, ffi.Int32,
+              cJSON_bool)>>('cJSON_PrintBuffered');
+  late final _cJSON_PrintBuffered = _cJSON_PrintBuffered_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>, int, int)>();
 
   int cJSON_PrintPreallocated(
     ffi.Pointer<cJSON> item,
@@ -150,11 +160,12 @@
     );
   }
 
-  late final _cJSON_PrintPreallocated_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_PrintPreallocated>>(
-          'cJSON_PrintPreallocated');
-  late final _dart_cJSON_PrintPreallocated _cJSON_PrintPreallocated =
-      _cJSON_PrintPreallocated_ptr.asFunction<_dart_cJSON_PrintPreallocated>();
+  late final _cJSON_PrintPreallocated_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32, cJSON_bool)>>('cJSON_PrintPreallocated');
+  late final _cJSON_PrintPreallocated = _cJSON_PrintPreallocated_ptr.asFunction<
+      int Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, int, int)>();
 
   void cJSON_Delete(
     ffi.Pointer<cJSON> item,
@@ -165,9 +176,10 @@
   }
 
   late final _cJSON_Delete_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Delete>>('cJSON_Delete');
-  late final _dart_cJSON_Delete _cJSON_Delete =
-      _cJSON_Delete_ptr.asFunction<_dart_cJSON_Delete>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_Delete');
+  late final _cJSON_Delete =
+      _cJSON_Delete_ptr.asFunction<void Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_GetArraySize(
     ffi.Pointer<cJSON> array,
@@ -178,9 +190,10 @@
   }
 
   late final _cJSON_GetArraySize_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetArraySize>>('cJSON_GetArraySize');
-  late final _dart_cJSON_GetArraySize _cJSON_GetArraySize =
-      _cJSON_GetArraySize_ptr.asFunction<_dart_cJSON_GetArraySize>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_GetArraySize');
+  late final _cJSON_GetArraySize =
+      _cJSON_GetArraySize_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_GetArrayItem(
     ffi.Pointer<cJSON> array,
@@ -192,10 +205,12 @@
     );
   }
 
-  late final _cJSON_GetArrayItem_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetArrayItem>>('cJSON_GetArrayItem');
-  late final _dart_cJSON_GetArrayItem _cJSON_GetArrayItem =
-      _cJSON_GetArrayItem_ptr.asFunction<_dart_cJSON_GetArrayItem>();
+  late final _cJSON_GetArrayItem_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Int32)>>('cJSON_GetArrayItem');
+  late final _cJSON_GetArrayItem = _cJSON_GetArrayItem_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, int)>();
 
   ffi.Pointer<cJSON> cJSON_GetObjectItem(
     ffi.Pointer<cJSON> object,
@@ -207,11 +222,12 @@
     );
   }
 
-  late final _cJSON_GetObjectItem_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetObjectItem>>(
-          'cJSON_GetObjectItem');
-  late final _dart_cJSON_GetObjectItem _cJSON_GetObjectItem =
-      _cJSON_GetObjectItem_ptr.asFunction<_dart_cJSON_GetObjectItem>();
+  late final _cJSON_GetObjectItem_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_GetObjectItem');
+  late final _cJSON_GetObjectItem = _cJSON_GetObjectItem_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_GetObjectItemCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -223,12 +239,14 @@
     );
   }
 
-  late final _cJSON_GetObjectItemCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetObjectItemCaseSensitive>>(
-          'cJSON_GetObjectItemCaseSensitive');
-  late final _dart_cJSON_GetObjectItemCaseSensitive
-      _cJSON_GetObjectItemCaseSensitive = _cJSON_GetObjectItemCaseSensitive_ptr
-          .asFunction<_dart_cJSON_GetObjectItemCaseSensitive>();
+  late final _cJSON_GetObjectItemCaseSensitive_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_GetObjectItemCaseSensitive');
+  late final _cJSON_GetObjectItemCaseSensitive =
+      _cJSON_GetObjectItemCaseSensitive_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   int cJSON_HasObjectItem(
     ffi.Pointer<cJSON> object,
@@ -240,20 +258,22 @@
     );
   }
 
-  late final _cJSON_HasObjectItem_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_HasObjectItem>>(
-          'cJSON_HasObjectItem');
-  late final _dart_cJSON_HasObjectItem _cJSON_HasObjectItem =
-      _cJSON_HasObjectItem_ptr.asFunction<_dart_cJSON_HasObjectItem>();
+  late final _cJSON_HasObjectItem_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_HasObjectItem');
+  late final _cJSON_HasObjectItem = _cJSON_HasObjectItem_ptr
+      .asFunction<int Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<ffi.Int8> cJSON_GetErrorPtr() {
     return _cJSON_GetErrorPtr();
   }
 
   late final _cJSON_GetErrorPtr_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetErrorPtr>>('cJSON_GetErrorPtr');
-  late final _dart_cJSON_GetErrorPtr _cJSON_GetErrorPtr =
-      _cJSON_GetErrorPtr_ptr.asFunction<_dart_cJSON_GetErrorPtr>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function()>>(
+          'cJSON_GetErrorPtr');
+  late final _cJSON_GetErrorPtr =
+      _cJSON_GetErrorPtr_ptr.asFunction<ffi.Pointer<ffi.Int8> Function()>();
 
   ffi.Pointer<ffi.Int8> cJSON_GetStringValue(
     ffi.Pointer<cJSON> item,
@@ -263,11 +283,12 @@
     );
   }
 
-  late final _cJSON_GetStringValue_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetStringValue>>(
-          'cJSON_GetStringValue');
-  late final _dart_cJSON_GetStringValue _cJSON_GetStringValue =
-      _cJSON_GetStringValue_ptr.asFunction<_dart_cJSON_GetStringValue>();
+  late final _cJSON_GetStringValue_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<cJSON>)>>('cJSON_GetStringValue');
+  late final _cJSON_GetStringValue = _cJSON_GetStringValue_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsInvalid(
     ffi.Pointer<cJSON> item,
@@ -278,9 +299,10 @@
   }
 
   late final _cJSON_IsInvalid_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsInvalid>>('cJSON_IsInvalid');
-  late final _dart_cJSON_IsInvalid _cJSON_IsInvalid =
-      _cJSON_IsInvalid_ptr.asFunction<_dart_cJSON_IsInvalid>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsInvalid');
+  late final _cJSON_IsInvalid =
+      _cJSON_IsInvalid_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsFalse(
     ffi.Pointer<cJSON> item,
@@ -291,9 +313,10 @@
   }
 
   late final _cJSON_IsFalse_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsFalse>>('cJSON_IsFalse');
-  late final _dart_cJSON_IsFalse _cJSON_IsFalse =
-      _cJSON_IsFalse_ptr.asFunction<_dart_cJSON_IsFalse>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsFalse');
+  late final _cJSON_IsFalse =
+      _cJSON_IsFalse_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsTrue(
     ffi.Pointer<cJSON> item,
@@ -304,9 +327,10 @@
   }
 
   late final _cJSON_IsTrue_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsTrue>>('cJSON_IsTrue');
-  late final _dart_cJSON_IsTrue _cJSON_IsTrue =
-      _cJSON_IsTrue_ptr.asFunction<_dart_cJSON_IsTrue>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsTrue');
+  late final _cJSON_IsTrue =
+      _cJSON_IsTrue_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsBool(
     ffi.Pointer<cJSON> item,
@@ -317,9 +341,10 @@
   }
 
   late final _cJSON_IsBool_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsBool>>('cJSON_IsBool');
-  late final _dart_cJSON_IsBool _cJSON_IsBool =
-      _cJSON_IsBool_ptr.asFunction<_dart_cJSON_IsBool>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsBool');
+  late final _cJSON_IsBool =
+      _cJSON_IsBool_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsNull(
     ffi.Pointer<cJSON> item,
@@ -330,9 +355,10 @@
   }
 
   late final _cJSON_IsNull_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsNull>>('cJSON_IsNull');
-  late final _dart_cJSON_IsNull _cJSON_IsNull =
-      _cJSON_IsNull_ptr.asFunction<_dart_cJSON_IsNull>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsNull');
+  late final _cJSON_IsNull =
+      _cJSON_IsNull_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsNumber(
     ffi.Pointer<cJSON> item,
@@ -343,9 +369,10 @@
   }
 
   late final _cJSON_IsNumber_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsNumber>>('cJSON_IsNumber');
-  late final _dart_cJSON_IsNumber _cJSON_IsNumber =
-      _cJSON_IsNumber_ptr.asFunction<_dart_cJSON_IsNumber>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsNumber');
+  late final _cJSON_IsNumber =
+      _cJSON_IsNumber_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsString(
     ffi.Pointer<cJSON> item,
@@ -356,9 +383,10 @@
   }
 
   late final _cJSON_IsString_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsString>>('cJSON_IsString');
-  late final _dart_cJSON_IsString _cJSON_IsString =
-      _cJSON_IsString_ptr.asFunction<_dart_cJSON_IsString>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsString');
+  late final _cJSON_IsString =
+      _cJSON_IsString_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsArray(
     ffi.Pointer<cJSON> item,
@@ -369,9 +397,10 @@
   }
 
   late final _cJSON_IsArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsArray>>('cJSON_IsArray');
-  late final _dart_cJSON_IsArray _cJSON_IsArray =
-      _cJSON_IsArray_ptr.asFunction<_dart_cJSON_IsArray>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsArray');
+  late final _cJSON_IsArray =
+      _cJSON_IsArray_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsObject(
     ffi.Pointer<cJSON> item,
@@ -382,9 +411,10 @@
   }
 
   late final _cJSON_IsObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsObject>>('cJSON_IsObject');
-  late final _dart_cJSON_IsObject _cJSON_IsObject =
-      _cJSON_IsObject_ptr.asFunction<_dart_cJSON_IsObject>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsObject');
+  late final _cJSON_IsObject =
+      _cJSON_IsObject_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsRaw(
     ffi.Pointer<cJSON> item,
@@ -395,36 +425,40 @@
   }
 
   late final _cJSON_IsRaw_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsRaw>>('cJSON_IsRaw');
-  late final _dart_cJSON_IsRaw _cJSON_IsRaw =
-      _cJSON_IsRaw_ptr.asFunction<_dart_cJSON_IsRaw>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsRaw');
+  late final _cJSON_IsRaw =
+      _cJSON_IsRaw_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateNull() {
     return _cJSON_CreateNull();
   }
 
   late final _cJSON_CreateNull_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateNull>>('cJSON_CreateNull');
-  late final _dart_cJSON_CreateNull _cJSON_CreateNull =
-      _cJSON_CreateNull_ptr.asFunction<_dart_cJSON_CreateNull>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateNull');
+  late final _cJSON_CreateNull =
+      _cJSON_CreateNull_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateTrue() {
     return _cJSON_CreateTrue();
   }
 
   late final _cJSON_CreateTrue_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateTrue>>('cJSON_CreateTrue');
-  late final _dart_cJSON_CreateTrue _cJSON_CreateTrue =
-      _cJSON_CreateTrue_ptr.asFunction<_dart_cJSON_CreateTrue>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateTrue');
+  late final _cJSON_CreateTrue =
+      _cJSON_CreateTrue_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateFalse() {
     return _cJSON_CreateFalse();
   }
 
   late final _cJSON_CreateFalse_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateFalse>>('cJSON_CreateFalse');
-  late final _dart_cJSON_CreateFalse _cJSON_CreateFalse =
-      _cJSON_CreateFalse_ptr.asFunction<_dart_cJSON_CreateFalse>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateFalse');
+  late final _cJSON_CreateFalse =
+      _cJSON_CreateFalse_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateBool(
     int boolean,
@@ -435,9 +469,10 @@
   }
 
   late final _cJSON_CreateBool_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateBool>>('cJSON_CreateBool');
-  late final _dart_cJSON_CreateBool _cJSON_CreateBool =
-      _cJSON_CreateBool_ptr.asFunction<_dart_cJSON_CreateBool>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function(cJSON_bool)>>(
+          'cJSON_CreateBool');
+  late final _cJSON_CreateBool =
+      _cJSON_CreateBool_ptr.asFunction<ffi.Pointer<cJSON> Function(int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateNumber(
     double num,
@@ -448,9 +483,10 @@
   }
 
   late final _cJSON_CreateNumber_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateNumber>>('cJSON_CreateNumber');
-  late final _dart_cJSON_CreateNumber _cJSON_CreateNumber =
-      _cJSON_CreateNumber_ptr.asFunction<_dart_cJSON_CreateNumber>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function(ffi.Double)>>(
+          'cJSON_CreateNumber');
+  late final _cJSON_CreateNumber =
+      _cJSON_CreateNumber_ptr.asFunction<ffi.Pointer<cJSON> Function(double)>();
 
   ffi.Pointer<cJSON> cJSON_CreateString(
     ffi.Pointer<ffi.Int8> string,
@@ -460,10 +496,12 @@
     );
   }
 
-  late final _cJSON_CreateString_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateString>>('cJSON_CreateString');
-  late final _dart_cJSON_CreateString _cJSON_CreateString =
-      _cJSON_CreateString_ptr.asFunction<_dart_cJSON_CreateString>();
+  late final _cJSON_CreateString_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>)>>('cJSON_CreateString');
+  late final _cJSON_CreateString = _cJSON_CreateString_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateRaw(
     ffi.Pointer<ffi.Int8> raw,
@@ -473,28 +511,32 @@
     );
   }
 
-  late final _cJSON_CreateRaw_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateRaw>>('cJSON_CreateRaw');
-  late final _dart_cJSON_CreateRaw _cJSON_CreateRaw =
-      _cJSON_CreateRaw_ptr.asFunction<_dart_cJSON_CreateRaw>();
+  late final _cJSON_CreateRaw_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>)>>('cJSON_CreateRaw');
+  late final _cJSON_CreateRaw = _cJSON_CreateRaw_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateArray() {
     return _cJSON_CreateArray();
   }
 
   late final _cJSON_CreateArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateArray>>('cJSON_CreateArray');
-  late final _dart_cJSON_CreateArray _cJSON_CreateArray =
-      _cJSON_CreateArray_ptr.asFunction<_dart_cJSON_CreateArray>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateArray');
+  late final _cJSON_CreateArray =
+      _cJSON_CreateArray_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateObject() {
     return _cJSON_CreateObject();
   }
 
   late final _cJSON_CreateObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateObject>>('cJSON_CreateObject');
-  late final _dart_cJSON_CreateObject _cJSON_CreateObject =
-      _cJSON_CreateObject_ptr.asFunction<_dart_cJSON_CreateObject>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateObject');
+  late final _cJSON_CreateObject =
+      _cJSON_CreateObject_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateStringReference(
     ffi.Pointer<ffi.Int8> string,
@@ -504,12 +546,12 @@
     );
   }
 
-  late final _cJSON_CreateStringReference_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateStringReference>>(
-          'cJSON_CreateStringReference');
-  late final _dart_cJSON_CreateStringReference _cJSON_CreateStringReference =
-      _cJSON_CreateStringReference_ptr
-          .asFunction<_dart_cJSON_CreateStringReference>();
+  late final _cJSON_CreateStringReference_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>)>>('cJSON_CreateStringReference');
+  late final _cJSON_CreateStringReference = _cJSON_CreateStringReference_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateObjectReference(
     ffi.Pointer<cJSON> child,
@@ -519,12 +561,11 @@
     );
   }
 
-  late final _cJSON_CreateObjectReference_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateObjectReference>>(
-          'cJSON_CreateObjectReference');
-  late final _dart_cJSON_CreateObjectReference _cJSON_CreateObjectReference =
-      _cJSON_CreateObjectReference_ptr
-          .asFunction<_dart_cJSON_CreateObjectReference>();
+  late final _cJSON_CreateObjectReference_ptr = _lookup<
+          ffi.NativeFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>>(
+      'cJSON_CreateObjectReference');
+  late final _cJSON_CreateObjectReference = _cJSON_CreateObjectReference_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateArrayReference(
     ffi.Pointer<cJSON> child,
@@ -534,12 +575,11 @@
     );
   }
 
-  late final _cJSON_CreateArrayReference_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateArrayReference>>(
-          'cJSON_CreateArrayReference');
-  late final _dart_cJSON_CreateArrayReference _cJSON_CreateArrayReference =
-      _cJSON_CreateArrayReference_ptr
-          .asFunction<_dart_cJSON_CreateArrayReference>();
+  late final _cJSON_CreateArrayReference_ptr = _lookup<
+          ffi.NativeFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>>(
+      'cJSON_CreateArrayReference');
+  late final _cJSON_CreateArrayReference = _cJSON_CreateArrayReference_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateIntArray(
     ffi.Pointer<ffi.Int32> numbers,
@@ -551,11 +591,12 @@
     );
   }
 
-  late final _cJSON_CreateIntArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateIntArray>>(
-          'cJSON_CreateIntArray');
-  late final _dart_cJSON_CreateIntArray _cJSON_CreateIntArray =
-      _cJSON_CreateIntArray_ptr.asFunction<_dart_cJSON_CreateIntArray>();
+  late final _cJSON_CreateIntArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int32>, ffi.Int32)>>('cJSON_CreateIntArray');
+  late final _cJSON_CreateIntArray = _cJSON_CreateIntArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int32>, int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateFloatArray(
     ffi.Pointer<ffi.Float> numbers,
@@ -567,11 +608,12 @@
     );
   }
 
-  late final _cJSON_CreateFloatArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateFloatArray>>(
-          'cJSON_CreateFloatArray');
-  late final _dart_cJSON_CreateFloatArray _cJSON_CreateFloatArray =
-      _cJSON_CreateFloatArray_ptr.asFunction<_dart_cJSON_CreateFloatArray>();
+  late final _cJSON_CreateFloatArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Float>, ffi.Int32)>>('cJSON_CreateFloatArray');
+  late final _cJSON_CreateFloatArray = _cJSON_CreateFloatArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Float>, int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateDoubleArray(
     ffi.Pointer<ffi.Double> numbers,
@@ -583,11 +625,12 @@
     );
   }
 
-  late final _cJSON_CreateDoubleArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateDoubleArray>>(
-          'cJSON_CreateDoubleArray');
-  late final _dart_cJSON_CreateDoubleArray _cJSON_CreateDoubleArray =
-      _cJSON_CreateDoubleArray_ptr.asFunction<_dart_cJSON_CreateDoubleArray>();
+  late final _cJSON_CreateDoubleArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Double>, ffi.Int32)>>('cJSON_CreateDoubleArray');
+  late final _cJSON_CreateDoubleArray = _cJSON_CreateDoubleArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Double>, int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateStringArray(
     ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
@@ -599,11 +642,12 @@
     );
   }
 
-  late final _cJSON_CreateStringArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateStringArray>>(
-          'cJSON_CreateStringArray');
-  late final _dart_cJSON_CreateStringArray _cJSON_CreateStringArray =
-      _cJSON_CreateStringArray_ptr.asFunction<_dart_cJSON_CreateStringArray>();
+  late final _cJSON_CreateStringArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32)>>('cJSON_CreateStringArray');
+  late final _cJSON_CreateStringArray = _cJSON_CreateStringArray_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>, int)>();
 
   void cJSON_AddItemToArray(
     ffi.Pointer<cJSON> array,
@@ -615,11 +659,12 @@
     );
   }
 
-  late final _cJSON_AddItemToArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemToArray>>(
-          'cJSON_AddItemToArray');
-  late final _dart_cJSON_AddItemToArray _cJSON_AddItemToArray =
-      _cJSON_AddItemToArray_ptr.asFunction<_dart_cJSON_AddItemToArray>();
+  late final _cJSON_AddItemToArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>>('cJSON_AddItemToArray');
+  late final _cJSON_AddItemToArray = _cJSON_AddItemToArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemToObject(
     ffi.Pointer<cJSON> object,
@@ -633,11 +678,13 @@
     );
   }
 
-  late final _cJSON_AddItemToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemToObject>>(
-          'cJSON_AddItemToObject');
-  late final _dart_cJSON_AddItemToObject _cJSON_AddItemToObject =
-      _cJSON_AddItemToObject_ptr.asFunction<_dart_cJSON_AddItemToObject>();
+  late final _cJSON_AddItemToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemToObject');
+  late final _cJSON_AddItemToObject = _cJSON_AddItemToObject_ptr.asFunction<
+      void Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemToObjectCS(
     ffi.Pointer<cJSON> object,
@@ -651,11 +698,13 @@
     );
   }
 
-  late final _cJSON_AddItemToObjectCS_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemToObjectCS>>(
-          'cJSON_AddItemToObjectCS');
-  late final _dart_cJSON_AddItemToObjectCS _cJSON_AddItemToObjectCS =
-      _cJSON_AddItemToObjectCS_ptr.asFunction<_dart_cJSON_AddItemToObjectCS>();
+  late final _cJSON_AddItemToObjectCS_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemToObjectCS');
+  late final _cJSON_AddItemToObjectCS = _cJSON_AddItemToObjectCS_ptr.asFunction<
+      void Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemReferenceToArray(
     ffi.Pointer<cJSON> array,
@@ -667,12 +716,12 @@
     );
   }
 
-  late final _cJSON_AddItemReferenceToArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemReferenceToArray>>(
-          'cJSON_AddItemReferenceToArray');
-  late final _dart_cJSON_AddItemReferenceToArray
-      _cJSON_AddItemReferenceToArray = _cJSON_AddItemReferenceToArray_ptr
-          .asFunction<_dart_cJSON_AddItemReferenceToArray>();
+  late final _cJSON_AddItemReferenceToArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemReferenceToArray');
+  late final _cJSON_AddItemReferenceToArray = _cJSON_AddItemReferenceToArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemReferenceToObject(
     ffi.Pointer<cJSON> object,
@@ -686,12 +735,14 @@
     );
   }
 
-  late final _cJSON_AddItemReferenceToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemReferenceToObject>>(
-          'cJSON_AddItemReferenceToObject');
-  late final _dart_cJSON_AddItemReferenceToObject
-      _cJSON_AddItemReferenceToObject = _cJSON_AddItemReferenceToObject_ptr
-          .asFunction<_dart_cJSON_AddItemReferenceToObject>();
+  late final _cJSON_AddItemReferenceToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemReferenceToObject');
+  late final _cJSON_AddItemReferenceToObject =
+      _cJSON_AddItemReferenceToObject_ptr.asFunction<
+          void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemViaPointer(
     ffi.Pointer<cJSON> parent,
@@ -703,12 +754,14 @@
     );
   }
 
-  late final _cJSON_DetachItemViaPointer_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemViaPointer>>(
-          'cJSON_DetachItemViaPointer');
-  late final _dart_cJSON_DetachItemViaPointer _cJSON_DetachItemViaPointer =
-      _cJSON_DetachItemViaPointer_ptr
-          .asFunction<_dart_cJSON_DetachItemViaPointer>();
+  late final _cJSON_DetachItemViaPointer_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<cJSON>)>>('cJSON_DetachItemViaPointer');
+  late final _cJSON_DetachItemViaPointer =
+      _cJSON_DetachItemViaPointer_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemFromArray(
     ffi.Pointer<cJSON> array,
@@ -720,12 +773,12 @@
     );
   }
 
-  late final _cJSON_DetachItemFromArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemFromArray>>(
-          'cJSON_DetachItemFromArray');
-  late final _dart_cJSON_DetachItemFromArray _cJSON_DetachItemFromArray =
-      _cJSON_DetachItemFromArray_ptr
-          .asFunction<_dart_cJSON_DetachItemFromArray>();
+  late final _cJSON_DetachItemFromArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Int32)>>('cJSON_DetachItemFromArray');
+  late final _cJSON_DetachItemFromArray = _cJSON_DetachItemFromArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, int)>();
 
   void cJSON_DeleteItemFromArray(
     ffi.Pointer<cJSON> array,
@@ -737,12 +790,11 @@
     );
   }
 
-  late final _cJSON_DeleteItemFromArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DeleteItemFromArray>>(
-          'cJSON_DeleteItemFromArray');
-  late final _dart_cJSON_DeleteItemFromArray _cJSON_DeleteItemFromArray =
-      _cJSON_DeleteItemFromArray_ptr
-          .asFunction<_dart_cJSON_DeleteItemFromArray>();
+  late final _cJSON_DeleteItemFromArray_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<cJSON>, ffi.Int32)>>(
+      'cJSON_DeleteItemFromArray');
+  late final _cJSON_DeleteItemFromArray = _cJSON_DeleteItemFromArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, int)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemFromObject(
     ffi.Pointer<cJSON> object,
@@ -754,12 +806,14 @@
     );
   }
 
-  late final _cJSON_DetachItemFromObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemFromObject>>(
-          'cJSON_DetachItemFromObject');
-  late final _dart_cJSON_DetachItemFromObject _cJSON_DetachItemFromObject =
-      _cJSON_DetachItemFromObject_ptr
-          .asFunction<_dart_cJSON_DetachItemFromObject>();
+  late final _cJSON_DetachItemFromObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_DetachItemFromObject');
+  late final _cJSON_DetachItemFromObject =
+      _cJSON_DetachItemFromObject_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemFromObjectCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -771,13 +825,15 @@
     );
   }
 
-  late final _cJSON_DetachItemFromObjectCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemFromObjectCaseSensitive>>(
-          'cJSON_DetachItemFromObjectCaseSensitive');
-  late final _dart_cJSON_DetachItemFromObjectCaseSensitive
-      _cJSON_DetachItemFromObjectCaseSensitive =
-      _cJSON_DetachItemFromObjectCaseSensitive_ptr
-          .asFunction<_dart_cJSON_DetachItemFromObjectCaseSensitive>();
+  late final _cJSON_DetachItemFromObjectCaseSensitive_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<cJSON> Function(
+                  ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>>(
+      'cJSON_DetachItemFromObjectCaseSensitive');
+  late final _cJSON_DetachItemFromObjectCaseSensitive =
+      _cJSON_DetachItemFromObjectCaseSensitive_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   void cJSON_DeleteItemFromObject(
     ffi.Pointer<cJSON> object,
@@ -789,12 +845,12 @@
     );
   }
 
-  late final _cJSON_DeleteItemFromObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DeleteItemFromObject>>(
-          'cJSON_DeleteItemFromObject');
-  late final _dart_cJSON_DeleteItemFromObject _cJSON_DeleteItemFromObject =
-      _cJSON_DeleteItemFromObject_ptr
-          .asFunction<_dart_cJSON_DeleteItemFromObject>();
+  late final _cJSON_DeleteItemFromObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_DeleteItemFromObject');
+  late final _cJSON_DeleteItemFromObject = _cJSON_DeleteItemFromObject_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   void cJSON_DeleteItemFromObjectCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -806,13 +862,13 @@
     );
   }
 
-  late final _cJSON_DeleteItemFromObjectCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DeleteItemFromObjectCaseSensitive>>(
-          'cJSON_DeleteItemFromObjectCaseSensitive');
-  late final _dart_cJSON_DeleteItemFromObjectCaseSensitive
-      _cJSON_DeleteItemFromObjectCaseSensitive =
-      _cJSON_DeleteItemFromObjectCaseSensitive_ptr
-          .asFunction<_dart_cJSON_DeleteItemFromObjectCaseSensitive>();
+  late final _cJSON_DeleteItemFromObjectCaseSensitive_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>>(
+      'cJSON_DeleteItemFromObjectCaseSensitive');
+  late final _cJSON_DeleteItemFromObjectCaseSensitive =
+      _cJSON_DeleteItemFromObjectCaseSensitive_ptr.asFunction<
+          void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   void cJSON_InsertItemInArray(
     ffi.Pointer<cJSON> array,
@@ -826,11 +882,12 @@
     );
   }
 
-  late final _cJSON_InsertItemInArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_InsertItemInArray>>(
-          'cJSON_InsertItemInArray');
-  late final _dart_cJSON_InsertItemInArray _cJSON_InsertItemInArray =
-      _cJSON_InsertItemInArray_ptr.asFunction<_dart_cJSON_InsertItemInArray>();
+  late final _cJSON_InsertItemInArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Int32,
+              ffi.Pointer<cJSON>)>>('cJSON_InsertItemInArray');
+  late final _cJSON_InsertItemInArray = _cJSON_InsertItemInArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, int, ffi.Pointer<cJSON>)>();
 
   int cJSON_ReplaceItemViaPointer(
     ffi.Pointer<cJSON> parent,
@@ -844,12 +901,14 @@
     );
   }
 
-  late final _cJSON_ReplaceItemViaPointer_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemViaPointer>>(
-          'cJSON_ReplaceItemViaPointer');
-  late final _dart_cJSON_ReplaceItemViaPointer _cJSON_ReplaceItemViaPointer =
-      _cJSON_ReplaceItemViaPointer_ptr
-          .asFunction<_dart_cJSON_ReplaceItemViaPointer>();
+  late final _cJSON_ReplaceItemViaPointer_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemViaPointer');
+  late final _cJSON_ReplaceItemViaPointer =
+      _cJSON_ReplaceItemViaPointer_ptr.asFunction<
+          int Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   void cJSON_ReplaceItemInArray(
     ffi.Pointer<cJSON> array,
@@ -863,12 +922,12 @@
     );
   }
 
-  late final _cJSON_ReplaceItemInArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemInArray>>(
-          'cJSON_ReplaceItemInArray');
-  late final _dart_cJSON_ReplaceItemInArray _cJSON_ReplaceItemInArray =
-      _cJSON_ReplaceItemInArray_ptr
-          .asFunction<_dart_cJSON_ReplaceItemInArray>();
+  late final _cJSON_ReplaceItemInArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Int32,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemInArray');
+  late final _cJSON_ReplaceItemInArray = _cJSON_ReplaceItemInArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, int, ffi.Pointer<cJSON>)>();
 
   void cJSON_ReplaceItemInObject(
     ffi.Pointer<cJSON> object,
@@ -882,12 +941,14 @@
     );
   }
 
-  late final _cJSON_ReplaceItemInObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemInObject>>(
-          'cJSON_ReplaceItemInObject');
-  late final _dart_cJSON_ReplaceItemInObject _cJSON_ReplaceItemInObject =
-      _cJSON_ReplaceItemInObject_ptr
-          .asFunction<_dart_cJSON_ReplaceItemInObject>();
+  late final _cJSON_ReplaceItemInObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemInObject');
+  late final _cJSON_ReplaceItemInObject =
+      _cJSON_ReplaceItemInObject_ptr.asFunction<
+          void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   void cJSON_ReplaceItemInObjectCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -901,13 +962,14 @@
     );
   }
 
-  late final _cJSON_ReplaceItemInObjectCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemInObjectCaseSensitive>>(
-          'cJSON_ReplaceItemInObjectCaseSensitive');
-  late final _dart_cJSON_ReplaceItemInObjectCaseSensitive
-      _cJSON_ReplaceItemInObjectCaseSensitive =
-      _cJSON_ReplaceItemInObjectCaseSensitive_ptr
-          .asFunction<_dart_cJSON_ReplaceItemInObjectCaseSensitive>();
+  late final _cJSON_ReplaceItemInObjectCaseSensitive_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemInObjectCaseSensitive');
+  late final _cJSON_ReplaceItemInObjectCaseSensitive =
+      _cJSON_ReplaceItemInObjectCaseSensitive_ptr.asFunction<
+          void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_Duplicate(
     ffi.Pointer<cJSON> item,
@@ -919,10 +981,12 @@
     );
   }
 
-  late final _cJSON_Duplicate_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Duplicate>>('cJSON_Duplicate');
-  late final _dart_cJSON_Duplicate _cJSON_Duplicate =
-      _cJSON_Duplicate_ptr.asFunction<_dart_cJSON_Duplicate>();
+  late final _cJSON_Duplicate_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, cJSON_bool)>>('cJSON_Duplicate');
+  late final _cJSON_Duplicate = _cJSON_Duplicate_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, int)>();
 
   int cJSON_Compare(
     ffi.Pointer<cJSON> a,
@@ -936,10 +1000,12 @@
     );
   }
 
-  late final _cJSON_Compare_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Compare>>('cJSON_Compare');
-  late final _dart_cJSON_Compare _cJSON_Compare =
-      _cJSON_Compare_ptr.asFunction<_dart_cJSON_Compare>();
+  late final _cJSON_Compare_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>,
+              cJSON_bool)>>('cJSON_Compare');
+  late final _cJSON_Compare = _cJSON_Compare_ptr
+      .asFunction<int Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>, int)>();
 
   void cJSON_Minify(
     ffi.Pointer<ffi.Int8> json,
@@ -950,9 +1016,10 @@
   }
 
   late final _cJSON_Minify_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Minify>>('cJSON_Minify');
-  late final _dart_cJSON_Minify _cJSON_Minify =
-      _cJSON_Minify_ptr.asFunction<_dart_cJSON_Minify>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Int8>)>>(
+          'cJSON_Minify');
+  late final _cJSON_Minify =
+      _cJSON_Minify_ptr.asFunction<void Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddNullToObject(
     ffi.Pointer<cJSON> object,
@@ -964,11 +1031,12 @@
     );
   }
 
-  late final _cJSON_AddNullToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddNullToObject>>(
-          'cJSON_AddNullToObject');
-  late final _dart_cJSON_AddNullToObject _cJSON_AddNullToObject =
-      _cJSON_AddNullToObject_ptr.asFunction<_dart_cJSON_AddNullToObject>();
+  late final _cJSON_AddNullToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddNullToObject');
+  late final _cJSON_AddNullToObject = _cJSON_AddNullToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddTrueToObject(
     ffi.Pointer<cJSON> object,
@@ -980,11 +1048,12 @@
     );
   }
 
-  late final _cJSON_AddTrueToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddTrueToObject>>(
-          'cJSON_AddTrueToObject');
-  late final _dart_cJSON_AddTrueToObject _cJSON_AddTrueToObject =
-      _cJSON_AddTrueToObject_ptr.asFunction<_dart_cJSON_AddTrueToObject>();
+  late final _cJSON_AddTrueToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddTrueToObject');
+  late final _cJSON_AddTrueToObject = _cJSON_AddTrueToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddFalseToObject(
     ffi.Pointer<cJSON> object,
@@ -996,11 +1065,12 @@
     );
   }
 
-  late final _cJSON_AddFalseToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddFalseToObject>>(
-          'cJSON_AddFalseToObject');
-  late final _dart_cJSON_AddFalseToObject _cJSON_AddFalseToObject =
-      _cJSON_AddFalseToObject_ptr.asFunction<_dart_cJSON_AddFalseToObject>();
+  late final _cJSON_AddFalseToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddFalseToObject');
+  late final _cJSON_AddFalseToObject = _cJSON_AddFalseToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddBoolToObject(
     ffi.Pointer<cJSON> object,
@@ -1014,11 +1084,13 @@
     );
   }
 
-  late final _cJSON_AddBoolToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddBoolToObject>>(
-          'cJSON_AddBoolToObject');
-  late final _dart_cJSON_AddBoolToObject _cJSON_AddBoolToObject =
-      _cJSON_AddBoolToObject_ptr.asFunction<_dart_cJSON_AddBoolToObject>();
+  late final _cJSON_AddBoolToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              cJSON_bool)>>('cJSON_AddBoolToObject');
+  late final _cJSON_AddBoolToObject = _cJSON_AddBoolToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, int)>();
 
   ffi.Pointer<cJSON> cJSON_AddNumberToObject(
     ffi.Pointer<cJSON> object,
@@ -1032,11 +1104,13 @@
     );
   }
 
-  late final _cJSON_AddNumberToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddNumberToObject>>(
-          'cJSON_AddNumberToObject');
-  late final _dart_cJSON_AddNumberToObject _cJSON_AddNumberToObject =
-      _cJSON_AddNumberToObject_ptr.asFunction<_dart_cJSON_AddNumberToObject>();
+  late final _cJSON_AddNumberToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Double)>>('cJSON_AddNumberToObject');
+  late final _cJSON_AddNumberToObject = _cJSON_AddNumberToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, double)>();
 
   ffi.Pointer<cJSON> cJSON_AddStringToObject(
     ffi.Pointer<cJSON> object,
@@ -1050,11 +1124,13 @@
     );
   }
 
-  late final _cJSON_AddStringToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddStringToObject>>(
-          'cJSON_AddStringToObject');
-  late final _dart_cJSON_AddStringToObject _cJSON_AddStringToObject =
-      _cJSON_AddStringToObject_ptr.asFunction<_dart_cJSON_AddStringToObject>();
+  late final _cJSON_AddStringToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddStringToObject');
+  late final _cJSON_AddStringToObject = _cJSON_AddStringToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddRawToObject(
     ffi.Pointer<cJSON> object,
@@ -1068,11 +1144,13 @@
     );
   }
 
-  late final _cJSON_AddRawToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddRawToObject>>(
-          'cJSON_AddRawToObject');
-  late final _dart_cJSON_AddRawToObject _cJSON_AddRawToObject =
-      _cJSON_AddRawToObject_ptr.asFunction<_dart_cJSON_AddRawToObject>();
+  late final _cJSON_AddRawToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddRawToObject');
+  late final _cJSON_AddRawToObject = _cJSON_AddRawToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddObjectToObject(
     ffi.Pointer<cJSON> object,
@@ -1084,11 +1162,12 @@
     );
   }
 
-  late final _cJSON_AddObjectToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddObjectToObject>>(
-          'cJSON_AddObjectToObject');
-  late final _dart_cJSON_AddObjectToObject _cJSON_AddObjectToObject =
-      _cJSON_AddObjectToObject_ptr.asFunction<_dart_cJSON_AddObjectToObject>();
+  late final _cJSON_AddObjectToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddObjectToObject');
+  late final _cJSON_AddObjectToObject = _cJSON_AddObjectToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddArrayToObject(
     ffi.Pointer<cJSON> object,
@@ -1100,11 +1179,12 @@
     );
   }
 
-  late final _cJSON_AddArrayToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddArrayToObject>>(
-          'cJSON_AddArrayToObject');
-  late final _dart_cJSON_AddArrayToObject _cJSON_AddArrayToObject =
-      _cJSON_AddArrayToObject_ptr.asFunction<_dart_cJSON_AddArrayToObject>();
+  late final _cJSON_AddArrayToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddArrayToObject');
+  late final _cJSON_AddArrayToObject = _cJSON_AddArrayToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   double cJSON_SetNumberHelper(
     ffi.Pointer<cJSON> object,
@@ -1116,11 +1196,12 @@
     );
   }
 
-  late final _cJSON_SetNumberHelper_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_SetNumberHelper>>(
-          'cJSON_SetNumberHelper');
-  late final _dart_cJSON_SetNumberHelper _cJSON_SetNumberHelper =
-      _cJSON_SetNumberHelper_ptr.asFunction<_dart_cJSON_SetNumberHelper>();
+  late final _cJSON_SetNumberHelper_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Double Function(
+              ffi.Pointer<cJSON>, ffi.Double)>>('cJSON_SetNumberHelper');
+  late final _cJSON_SetNumberHelper = _cJSON_SetNumberHelper_ptr
+      .asFunction<double Function(ffi.Pointer<cJSON>, double)>();
 
   ffi.Pointer<ffi.Void> cJSON_malloc(
     int size,
@@ -1131,9 +1212,10 @@
   }
 
   late final _cJSON_malloc_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_malloc>>('cJSON_malloc');
-  late final _dart_cJSON_malloc _cJSON_malloc =
-      _cJSON_malloc_ptr.asFunction<_dart_cJSON_malloc>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.IntPtr)>>(
+          'cJSON_malloc');
+  late final _cJSON_malloc =
+      _cJSON_malloc_ptr.asFunction<ffi.Pointer<ffi.Void> Function(int)>();
 
   void cJSON_free(
     ffi.Pointer<ffi.Void> object,
@@ -1144,9 +1226,10 @@
   }
 
   late final _cJSON_free_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_free>>('cJSON_free');
-  late final _dart_cJSON_free _cJSON_free =
-      _cJSON_free_ptr.asFunction<_dart_cJSON_free>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
+          'cJSON_free');
+  late final _cJSON_free =
+      _cJSON_free_ptr.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
 }
 
 class cJSON extends ffi.Struct {
@@ -1171,11 +1254,16 @@
 }
 
 class cJSON_Hooks extends ffi.Struct {
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_1>> malloc_fn;
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.IntPtr)>> malloc_fn;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_2>> free_fn;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      free_fn;
 }
 
+typedef cJSON_bool = ffi.Int32;
+
 const int CJSON_VERSION_MAJOR = 1;
 
 const int CJSON_VERSION_MINOR = 7;
@@ -1207,691 +1295,3 @@
 const int CJSON_NESTING_LIMIT = 1000;
 
 const double CJSON_DOUBLE_PRECISION = 1e-16;
-
-typedef _c_cJSON_Version = ffi.Pointer<ffi.Int8> Function();
-
-typedef _dart_cJSON_Version = ffi.Pointer<ffi.Int8> Function();
-
-typedef _c_cJSON_InitHooks = ffi.Void Function(
-  ffi.Pointer<cJSON_Hooks> hooks,
-);
-
-typedef _dart_cJSON_InitHooks = void Function(
-  ffi.Pointer<cJSON_Hooks> hooks,
-);
-
-typedef _c_cJSON_Parse = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-);
-
-typedef _dart_cJSON_Parse = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-);
-
-typedef _c_cJSON_ParseWithOpts = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> return_parse_end,
-  ffi.Int32 require_null_terminated,
-);
-
-typedef _dart_cJSON_ParseWithOpts = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> return_parse_end,
-  int require_null_terminated,
-);
-
-typedef _c_cJSON_Print = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_Print = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_PrintUnformatted = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_PrintUnformatted = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_PrintBuffered = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Int32 prebuffer,
-  ffi.Int32 fmt,
-);
-
-typedef _dart_cJSON_PrintBuffered = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-  int prebuffer,
-  int fmt,
-);
-
-typedef _c_cJSON_PrintPreallocated = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<ffi.Int8> buffer,
-  ffi.Int32 length,
-  ffi.Int32 format,
-);
-
-typedef _dart_cJSON_PrintPreallocated = int Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<ffi.Int8> buffer,
-  int length,
-  int format,
-);
-
-typedef _c_cJSON_Delete = ffi.Void Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_Delete = void Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_GetArraySize = ffi.Int32 Function(
-  ffi.Pointer<cJSON> array,
-);
-
-typedef _dart_cJSON_GetArraySize = int Function(
-  ffi.Pointer<cJSON> array,
-);
-
-typedef _c_cJSON_GetArrayItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 index,
-);
-
-typedef _dart_cJSON_GetArrayItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  int index,
-);
-
-typedef _c_cJSON_GetObjectItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_GetObjectItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_GetObjectItemCaseSensitive = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_GetObjectItemCaseSensitive = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_HasObjectItem = ffi.Int32 Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_HasObjectItem = int Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_GetErrorPtr = ffi.Pointer<ffi.Int8> Function();
-
-typedef _dart_cJSON_GetErrorPtr = ffi.Pointer<ffi.Int8> Function();
-
-typedef _c_cJSON_GetStringValue = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_GetStringValue = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsInvalid = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsInvalid = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsFalse = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsFalse = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsTrue = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsTrue = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsBool = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsBool = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsNull = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsNull = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsNumber = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsNumber = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsString = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsString = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsArray = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsArray = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsObject = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsObject = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsRaw = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsRaw = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_CreateNull = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateNull = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateTrue = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateTrue = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateFalse = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateFalse = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateBool = ffi.Pointer<cJSON> Function(
-  ffi.Int32 boolean,
-);
-
-typedef _dart_cJSON_CreateBool = ffi.Pointer<cJSON> Function(
-  int boolean,
-);
-
-typedef _c_cJSON_CreateNumber = ffi.Pointer<cJSON> Function(
-  ffi.Double num,
-);
-
-typedef _dart_cJSON_CreateNumber = ffi.Pointer<cJSON> Function(
-  double num,
-);
-
-typedef _c_cJSON_CreateString = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_CreateString = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_CreateRaw = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _dart_cJSON_CreateRaw = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _c_cJSON_CreateArray = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateArray = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateObject = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateObject = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateStringReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_CreateStringReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_CreateObjectReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _dart_cJSON_CreateObjectReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _c_cJSON_CreateArrayReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _dart_cJSON_CreateArrayReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _c_cJSON_CreateIntArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int32> numbers,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateIntArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int32> numbers,
-  int count,
-);
-
-typedef _c_cJSON_CreateFloatArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Float> numbers,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateFloatArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Float> numbers,
-  int count,
-);
-
-typedef _c_cJSON_CreateDoubleArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Double> numbers,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateDoubleArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Double> numbers,
-  int count,
-);
-
-typedef _c_cJSON_CreateStringArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateStringArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
-  int count,
-);
-
-typedef _c_cJSON_AddItemToArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemToArray = void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemToObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemToObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemToObjectCS = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemToObjectCS = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemReferenceToArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemReferenceToArray = void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemReferenceToObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemReferenceToObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_DetachItemViaPointer = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_DetachItemViaPointer = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_DetachItemFromArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-);
-
-typedef _dart_cJSON_DetachItemFromArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-);
-
-typedef _c_cJSON_DeleteItemFromArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-);
-
-typedef _dart_cJSON_DeleteItemFromArray = void Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-);
-
-typedef _c_cJSON_DetachItemFromObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DetachItemFromObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_DetachItemFromObjectCaseSensitive = ffi.Pointer<cJSON>
-    Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DetachItemFromObjectCaseSensitive = ffi.Pointer<cJSON>
-    Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_DeleteItemFromObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DeleteItemFromObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_DeleteItemFromObjectCaseSensitive = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DeleteItemFromObjectCaseSensitive = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_InsertItemInArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_InsertItemInArray = void Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_ReplaceItemViaPointer = ffi.Int32 Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<cJSON> replacement,
-);
-
-typedef _dart_cJSON_ReplaceItemViaPointer = int Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<cJSON> replacement,
-);
-
-typedef _c_cJSON_ReplaceItemInArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_ReplaceItemInArray = void Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_ReplaceItemInObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_ReplaceItemInObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_ReplaceItemInObjectCaseSensitive = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_ReplaceItemInObjectCaseSensitive = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_Duplicate = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Int32 recurse,
-);
-
-typedef _dart_cJSON_Duplicate = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> item,
-  int recurse,
-);
-
-typedef _c_cJSON_Compare = ffi.Int32 Function(
-  ffi.Pointer<cJSON> a,
-  ffi.Pointer<cJSON> b,
-  ffi.Int32 case_sensitive,
-);
-
-typedef _dart_cJSON_Compare = int Function(
-  ffi.Pointer<cJSON> a,
-  ffi.Pointer<cJSON> b,
-  int case_sensitive,
-);
-
-typedef _c_cJSON_Minify = ffi.Void Function(
-  ffi.Pointer<ffi.Int8> json,
-);
-
-typedef _dart_cJSON_Minify = void Function(
-  ffi.Pointer<ffi.Int8> json,
-);
-
-typedef _c_cJSON_AddNullToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddNullToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddTrueToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddTrueToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddFalseToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddFalseToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddBoolToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Int32 boolean,
-);
-
-typedef _dart_cJSON_AddBoolToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  int boolean,
-);
-
-typedef _c_cJSON_AddNumberToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Double number,
-);
-
-typedef _dart_cJSON_AddNumberToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  double number,
-);
-
-typedef _c_cJSON_AddStringToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_AddStringToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_AddRawToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _dart_cJSON_AddRawToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _c_cJSON_AddObjectToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddObjectToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddArrayToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddArrayToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_SetNumberHelper = ffi.Double Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Double number,
-);
-
-typedef _dart_cJSON_SetNumberHelper = double Function(
-  ffi.Pointer<cJSON> object,
-  double number,
-);
-
-typedef _c_cJSON_malloc = ffi.Pointer<ffi.Void> Function(
-  ffi.Uint64 size,
-);
-
-typedef _dart_cJSON_malloc = ffi.Pointer<ffi.Void> Function(
-  int size,
-);
-
-typedef _c_cJSON_free = ffi.Void Function(
-  ffi.Pointer<ffi.Void> object,
-);
-
-typedef _dart_cJSON_free = void Function(
-  ffi.Pointer<ffi.Void> object,
-);
-
-typedef _typedefC_1 = ffi.Pointer<ffi.Void> Function(
-  ffi.Uint64,
-);
-
-typedef _typedefC_2 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
diff --git a/example/c_json/main.dart b/example/c_json/main.dart
index 2774c31..99042eb 100644
--- a/example/c_json/main.dart
+++ b/example/c_json/main.dart
@@ -7,6 +7,7 @@
 import 'dart:io';
 
 import 'package:ffi/ffi.dart';
+import 'package:path/path.dart' as p;
 
 import 'cjson_generated_bindings.dart' as cj;
 
@@ -45,12 +46,14 @@
 }
 
 String _getPath() {
-  var path = '../../third_party/cjson_library/libcjson.so';
+  final cjsonExamplePath = Directory.current.absolute.path;
+  var path = p.join(cjsonExamplePath, '../../third_party/cjson_library/');
   if (Platform.isMacOS) {
-    path = '../../third_party/cjson_library/libstructs.dylib';
-  }
-  if (Platform.isWindows) {
-    path = r'..\..\third_party\cjson_library\Debug\structs.dll';
+    path = p.join(path, 'libcjson.dylib');
+  } else if (Platform.isWindows) {
+    path = p.join(path, 'Debug', 'cjson.dll');
+  } else {
+    path = p.join(path, 'libcjson.so');
   }
   return path;
 }
diff --git a/example/c_json/pubspec.yaml b/example/c_json/pubspec.yaml
index 5bce972..03a913b 100644
--- a/example/c_json/pubspec.yaml
+++ b/example/c_json/pubspec.yaml
@@ -5,10 +5,11 @@
 name: c_json_example
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+  sdk: '>=2.13.0 <3.0.0'
 
 dependencies:
   ffi: ^1.0.0
+  path: ^1.8.0
 
 dev_dependencies:
   ffigen:
@@ -24,6 +25,8 @@
     include-directives:
       - '**cJSON.h'
   comments: false
+  typedef-map:
+    'size_t': 'IntPtr'
 
   preamble: |
     // Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
diff --git a/example/libclang-example/generated_bindings.dart b/example/libclang-example/generated_bindings.dart
index 71fa196..f8e77c4 100644
--- a/example/libclang-example/generated_bindings.dart
+++ b/example/libclang-example/generated_bindings.dart
@@ -34,8 +34,8 @@
 
   late final _clang_getCString_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCString>>('clang_getCString');
-  late final _dart_clang_getCString _clang_getCString =
-      _clang_getCString_ptr.asFunction<_dart_clang_getCString>();
+  late final _clang_getCString = _clang_getCString_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(CXString)>();
 
   /// Free the given string.
   void clang_disposeString(
@@ -49,8 +49,8 @@
   late final _clang_disposeString_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeString>>(
           'clang_disposeString');
-  late final _dart_clang_disposeString _clang_disposeString =
-      _clang_disposeString_ptr.asFunction<_dart_clang_disposeString>();
+  late final _clang_disposeString =
+      _clang_disposeString_ptr.asFunction<void Function(CXString)>();
 
   /// Free the given string set.
   void clang_disposeStringSet(
@@ -64,8 +64,8 @@
   late final _clang_disposeStringSet_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeStringSet>>(
           'clang_disposeStringSet');
-  late final _dart_clang_disposeStringSet _clang_disposeStringSet =
-      _clang_disposeStringSet_ptr.asFunction<_dart_clang_disposeStringSet>();
+  late final _clang_disposeStringSet = _clang_disposeStringSet_ptr
+      .asFunction<void Function(ffi.Pointer<CXStringSet>)>();
 
   /// Provides a shared context for creating translation units.
   ///
@@ -105,7 +105,7 @@
   /// This process of creating the 'pch', loading it separately, and using it (via
   /// -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
   /// (which gives the indexer the same performance benefit as the compiler).
-  ffi.Pointer<ffi.Void> clang_createIndex(
+  CXIndex clang_createIndex(
     int excludeDeclarationsFromPCH,
     int displayDiagnostics,
   ) {
@@ -118,15 +118,15 @@
   late final _clang_createIndex_ptr =
       _lookup<ffi.NativeFunction<Native_clang_createIndex>>(
           'clang_createIndex');
-  late final _dart_clang_createIndex _clang_createIndex =
-      _clang_createIndex_ptr.asFunction<_dart_clang_createIndex>();
+  late final _clang_createIndex =
+      _clang_createIndex_ptr.asFunction<CXIndex Function(int, int)>();
 
   /// Destroy the given index.
   ///
   /// The index must not be destroyed until all of the translation units created
   /// within that index have been destroyed.
   void clang_disposeIndex(
-    ffi.Pointer<ffi.Void> index,
+    CXIndex index,
   ) {
     return _clang_disposeIndex(
       index,
@@ -136,8 +136,8 @@
   late final _clang_disposeIndex_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeIndex>>(
           'clang_disposeIndex');
-  late final _dart_clang_disposeIndex _clang_disposeIndex =
-      _clang_disposeIndex_ptr.asFunction<_dart_clang_disposeIndex>();
+  late final _clang_disposeIndex =
+      _clang_disposeIndex_ptr.asFunction<void Function(CXIndex)>();
 
   /// Sets general options associated with a CXIndex.
   ///
@@ -151,7 +151,7 @@
   ///
   /// \param options A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags.
   void clang_CXIndex_setGlobalOptions(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndex arg0,
     int options,
   ) {
     return _clang_CXIndex_setGlobalOptions(
@@ -163,16 +163,16 @@
   late final _clang_CXIndex_setGlobalOptions_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXIndex_setGlobalOptions>>(
           'clang_CXIndex_setGlobalOptions');
-  late final _dart_clang_CXIndex_setGlobalOptions
-      _clang_CXIndex_setGlobalOptions = _clang_CXIndex_setGlobalOptions_ptr
-          .asFunction<_dart_clang_CXIndex_setGlobalOptions>();
+  late final _clang_CXIndex_setGlobalOptions =
+      _clang_CXIndex_setGlobalOptions_ptr
+          .asFunction<void Function(CXIndex, int)>();
 
   /// Gets the general options associated with a CXIndex.
   ///
   /// \returns A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags that
   /// are associated with the given CXIndex object.
   int clang_CXIndex_getGlobalOptions(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndex arg0,
   ) {
     return _clang_CXIndex_getGlobalOptions(
       arg0,
@@ -182,9 +182,8 @@
   late final _clang_CXIndex_getGlobalOptions_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXIndex_getGlobalOptions>>(
           'clang_CXIndex_getGlobalOptions');
-  late final _dart_clang_CXIndex_getGlobalOptions
-      _clang_CXIndex_getGlobalOptions = _clang_CXIndex_getGlobalOptions_ptr
-          .asFunction<_dart_clang_CXIndex_getGlobalOptions>();
+  late final _clang_CXIndex_getGlobalOptions =
+      _clang_CXIndex_getGlobalOptions_ptr.asFunction<int Function(CXIndex)>();
 
   /// Sets the invocation emission path option in a CXIndex.
   ///
@@ -192,7 +191,7 @@
   /// files for certain libclang invocations. A null value (default) implies that
   /// libclang invocations are not logged..
   void clang_CXIndex_setInvocationEmissionPathOption(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndex arg0,
     ffi.Pointer<ffi.Int8> Path,
   ) {
     return _clang_CXIndex_setInvocationEmissionPathOption(
@@ -205,14 +204,13 @@
           ffi.NativeFunction<
               Native_clang_CXIndex_setInvocationEmissionPathOption>>(
       'clang_CXIndex_setInvocationEmissionPathOption');
-  late final _dart_clang_CXIndex_setInvocationEmissionPathOption
-      _clang_CXIndex_setInvocationEmissionPathOption =
+  late final _clang_CXIndex_setInvocationEmissionPathOption =
       _clang_CXIndex_setInvocationEmissionPathOption_ptr
-          .asFunction<_dart_clang_CXIndex_setInvocationEmissionPathOption>();
+          .asFunction<void Function(CXIndex, ffi.Pointer<ffi.Int8>)>();
 
   /// Retrieve the complete file and path name of the given file.
   CXString clang_getFileName(
-    ffi.Pointer<ffi.Void> SFile,
+    CXFile SFile,
   ) {
     return _clang_getFileName(
       SFile,
@@ -222,12 +220,12 @@
   late final _clang_getFileName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFileName>>(
           'clang_getFileName');
-  late final _dart_clang_getFileName _clang_getFileName =
-      _clang_getFileName_ptr.asFunction<_dart_clang_getFileName>();
+  late final _clang_getFileName =
+      _clang_getFileName_ptr.asFunction<CXString Function(CXFile)>();
 
   /// Retrieve the last modification time of the given file.
   int clang_getFileTime(
-    ffi.Pointer<ffi.Void> SFile,
+    CXFile SFile,
   ) {
     return _clang_getFileTime(
       SFile,
@@ -237,8 +235,8 @@
   late final _clang_getFileTime_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFileTime>>(
           'clang_getFileTime');
-  late final _dart_clang_getFileTime _clang_getFileTime =
-      _clang_getFileTime_ptr.asFunction<_dart_clang_getFileTime>();
+  late final _clang_getFileTime =
+      _clang_getFileTime_ptr.asFunction<int Function(CXFile)>();
 
   /// Retrieve the unique ID for the given \c file.
   ///
@@ -247,7 +245,7 @@
   /// \returns If there was a failure getting the unique ID, returns non-zero,
   /// otherwise returns 0.
   int clang_getFileUniqueID(
-    ffi.Pointer<ffi.Void> file,
+    CXFile file,
     ffi.Pointer<CXFileUniqueID> outID,
   ) {
     return _clang_getFileUniqueID(
@@ -259,15 +257,15 @@
   late final _clang_getFileUniqueID_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFileUniqueID>>(
           'clang_getFileUniqueID');
-  late final _dart_clang_getFileUniqueID _clang_getFileUniqueID =
-      _clang_getFileUniqueID_ptr.asFunction<_dart_clang_getFileUniqueID>();
+  late final _clang_getFileUniqueID = _clang_getFileUniqueID_ptr
+      .asFunction<int Function(CXFile, ffi.Pointer<CXFileUniqueID>)>();
 
   /// Determine whether the given header is guarded against
   /// multiple inclusions, either with the conventional
   /// \#ifndef/\#define/\#endif macro guards or with \#pragma once.
   int clang_isFileMultipleIncludeGuarded(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
   ) {
     return _clang_isFileMultipleIncludeGuarded(
       tu,
@@ -278,10 +276,9 @@
   late final _clang_isFileMultipleIncludeGuarded_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isFileMultipleIncludeGuarded>>(
           'clang_isFileMultipleIncludeGuarded');
-  late final _dart_clang_isFileMultipleIncludeGuarded
-      _clang_isFileMultipleIncludeGuarded =
+  late final _clang_isFileMultipleIncludeGuarded =
       _clang_isFileMultipleIncludeGuarded_ptr
-          .asFunction<_dart_clang_isFileMultipleIncludeGuarded>();
+          .asFunction<int Function(CXTranslationUnit, CXFile)>();
 
   /// Retrieve a file handle within the given translation unit.
   ///
@@ -291,8 +288,8 @@
   ///
   /// \returns the file handle for the named file in the translation unit \p tu,
   /// or a NULL file handle if the file was not a part of this translation unit.
-  ffi.Pointer<ffi.Void> clang_getFile(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
+  CXFile clang_getFile(
+    CXTranslationUnit tu,
     ffi.Pointer<ffi.Int8> file_name,
   ) {
     return _clang_getFile(
@@ -303,8 +300,8 @@
 
   late final _clang_getFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFile>>('clang_getFile');
-  late final _dart_clang_getFile _clang_getFile =
-      _clang_getFile_ptr.asFunction<_dart_clang_getFile>();
+  late final _clang_getFile = _clang_getFile_ptr
+      .asFunction<CXFile Function(CXTranslationUnit, ffi.Pointer<ffi.Int8>)>();
 
   /// Retrieve the buffer associated with the given file.
   ///
@@ -317,9 +314,9 @@
   /// \returns a pointer to the buffer in memory that holds the contents of
   /// \p file, or a NULL pointer when the file is not loaded.
   ffi.Pointer<ffi.Int8> clang_getFileContents(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
-    ffi.Pointer<ffi.Uint64> size,
+    CXTranslationUnit tu,
+    CXFile file,
+    ffi.Pointer<ffi.IntPtr> size,
   ) {
     return _clang_getFileContents(
       tu,
@@ -331,14 +328,15 @@
   late final _clang_getFileContents_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFileContents>>(
           'clang_getFileContents');
-  late final _dart_clang_getFileContents _clang_getFileContents =
-      _clang_getFileContents_ptr.asFunction<_dart_clang_getFileContents>();
+  late final _clang_getFileContents = _clang_getFileContents_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(
+          CXTranslationUnit, CXFile, ffi.Pointer<ffi.IntPtr>)>();
 
   /// Returns non-zero if the \c file1 and \c file2 point to the same file,
   /// or they are both NULL.
   int clang_File_isEqual(
-    ffi.Pointer<ffi.Void> file1,
-    ffi.Pointer<ffi.Void> file2,
+    CXFile file1,
+    CXFile file2,
   ) {
     return _clang_File_isEqual(
       file1,
@@ -349,14 +347,14 @@
   late final _clang_File_isEqual_ptr =
       _lookup<ffi.NativeFunction<Native_clang_File_isEqual>>(
           'clang_File_isEqual');
-  late final _dart_clang_File_isEqual _clang_File_isEqual =
-      _clang_File_isEqual_ptr.asFunction<_dart_clang_File_isEqual>();
+  late final _clang_File_isEqual =
+      _clang_File_isEqual_ptr.asFunction<int Function(CXFile, CXFile)>();
 
   /// Returns the real path name of \c file.
   ///
   /// An empty string may be returned. Use \c clang_getFileName() in that case.
   CXString clang_File_tryGetRealPathName(
-    ffi.Pointer<ffi.Void> file,
+    CXFile file,
   ) {
     return _clang_File_tryGetRealPathName(
       file,
@@ -366,9 +364,8 @@
   late final _clang_File_tryGetRealPathName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_File_tryGetRealPathName>>(
           'clang_File_tryGetRealPathName');
-  late final _dart_clang_File_tryGetRealPathName
-      _clang_File_tryGetRealPathName = _clang_File_tryGetRealPathName_ptr
-          .asFunction<_dart_clang_File_tryGetRealPathName>();
+  late final _clang_File_tryGetRealPathName = _clang_File_tryGetRealPathName_ptr
+      .asFunction<CXString Function(CXFile)>();
 
   /// Retrieve a NULL (invalid) source location.
   CXSourceLocation clang_getNullLocation() {
@@ -378,8 +375,8 @@
   late final _clang_getNullLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNullLocation>>(
           'clang_getNullLocation');
-  late final _dart_clang_getNullLocation _clang_getNullLocation =
-      _clang_getNullLocation_ptr.asFunction<_dart_clang_getNullLocation>();
+  late final _clang_getNullLocation =
+      _clang_getNullLocation_ptr.asFunction<CXSourceLocation Function()>();
 
   /// Determine whether two source locations, which must refer into
   /// the same translation unit, refer to exactly the same point in the source
@@ -400,14 +397,14 @@
   late final _clang_equalLocations_ptr =
       _lookup<ffi.NativeFunction<Native_clang_equalLocations>>(
           'clang_equalLocations');
-  late final _dart_clang_equalLocations _clang_equalLocations =
-      _clang_equalLocations_ptr.asFunction<_dart_clang_equalLocations>();
+  late final _clang_equalLocations = _clang_equalLocations_ptr
+      .asFunction<int Function(CXSourceLocation, CXSourceLocation)>();
 
   /// Retrieves the source location associated with a given file/line/column
   /// in a particular translation unit.
   CXSourceLocation clang_getLocation(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
     int line,
     int column,
   ) {
@@ -422,14 +419,14 @@
   late final _clang_getLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getLocation>>(
           'clang_getLocation');
-  late final _dart_clang_getLocation _clang_getLocation =
-      _clang_getLocation_ptr.asFunction<_dart_clang_getLocation>();
+  late final _clang_getLocation = _clang_getLocation_ptr.asFunction<
+      CXSourceLocation Function(CXTranslationUnit, CXFile, int, int)>();
 
   /// Retrieves the source location associated with a given character offset
   /// in a particular translation unit.
   CXSourceLocation clang_getLocationForOffset(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
     int offset,
   ) {
     return _clang_getLocationForOffset(
@@ -442,9 +439,8 @@
   late final _clang_getLocationForOffset_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getLocationForOffset>>(
           'clang_getLocationForOffset');
-  late final _dart_clang_getLocationForOffset _clang_getLocationForOffset =
-      _clang_getLocationForOffset_ptr
-          .asFunction<_dart_clang_getLocationForOffset>();
+  late final _clang_getLocationForOffset = _clang_getLocationForOffset_ptr
+      .asFunction<CXSourceLocation Function(CXTranslationUnit, CXFile, int)>();
 
   /// Returns non-zero if the given source location is in a system header.
   int clang_Location_isInSystemHeader(
@@ -458,9 +454,9 @@
   late final _clang_Location_isInSystemHeader_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Location_isInSystemHeader>>(
           'clang_Location_isInSystemHeader');
-  late final _dart_clang_Location_isInSystemHeader
-      _clang_Location_isInSystemHeader = _clang_Location_isInSystemHeader_ptr
-          .asFunction<_dart_clang_Location_isInSystemHeader>();
+  late final _clang_Location_isInSystemHeader =
+      _clang_Location_isInSystemHeader_ptr
+          .asFunction<int Function(CXSourceLocation)>();
 
   /// Returns non-zero if the given source location is in the main file of
   /// the corresponding translation unit.
@@ -475,9 +471,8 @@
   late final _clang_Location_isFromMainFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Location_isFromMainFile>>(
           'clang_Location_isFromMainFile');
-  late final _dart_clang_Location_isFromMainFile
-      _clang_Location_isFromMainFile = _clang_Location_isFromMainFile_ptr
-          .asFunction<_dart_clang_Location_isFromMainFile>();
+  late final _clang_Location_isFromMainFile = _clang_Location_isFromMainFile_ptr
+      .asFunction<int Function(CXSourceLocation)>();
 
   /// Retrieve a NULL (invalid) source range.
   CXSourceRange clang_getNullRange() {
@@ -487,8 +482,8 @@
   late final _clang_getNullRange_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNullRange>>(
           'clang_getNullRange');
-  late final _dart_clang_getNullRange _clang_getNullRange =
-      _clang_getNullRange_ptr.asFunction<_dart_clang_getNullRange>();
+  late final _clang_getNullRange =
+      _clang_getNullRange_ptr.asFunction<CXSourceRange Function()>();
 
   /// Retrieve a source range given the beginning and ending source
   /// locations.
@@ -504,8 +499,8 @@
 
   late final _clang_getRange_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getRange>>('clang_getRange');
-  late final _dart_clang_getRange _clang_getRange =
-      _clang_getRange_ptr.asFunction<_dart_clang_getRange>();
+  late final _clang_getRange = _clang_getRange_ptr
+      .asFunction<CXSourceRange Function(CXSourceLocation, CXSourceLocation)>();
 
   /// Determine whether two ranges are equivalent.
   ///
@@ -523,8 +518,8 @@
   late final _clang_equalRanges_ptr =
       _lookup<ffi.NativeFunction<Native_clang_equalRanges>>(
           'clang_equalRanges');
-  late final _dart_clang_equalRanges _clang_equalRanges =
-      _clang_equalRanges_ptr.asFunction<_dart_clang_equalRanges>();
+  late final _clang_equalRanges = _clang_equalRanges_ptr
+      .asFunction<int Function(CXSourceRange, CXSourceRange)>();
 
   /// Returns non-zero if \p range is null.
   int clang_Range_isNull(
@@ -538,8 +533,8 @@
   late final _clang_Range_isNull_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Range_isNull>>(
           'clang_Range_isNull');
-  late final _dart_clang_Range_isNull _clang_Range_isNull =
-      _clang_Range_isNull_ptr.asFunction<_dart_clang_Range_isNull>();
+  late final _clang_Range_isNull =
+      _clang_Range_isNull_ptr.asFunction<int Function(CXSourceRange)>();
 
   /// Retrieve the file, line, column, and offset represented by
   /// the given source location.
@@ -563,7 +558,7 @@
   /// buffer to which the given source location points.
   void clang_getExpansionLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -580,9 +575,14 @@
   late final _clang_getExpansionLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getExpansionLocation>>(
           'clang_getExpansionLocation');
-  late final _dart_clang_getExpansionLocation _clang_getExpansionLocation =
-      _clang_getExpansionLocation_ptr
-          .asFunction<_dart_clang_getExpansionLocation>();
+  late final _clang_getExpansionLocation =
+      _clang_getExpansionLocation_ptr.asFunction<
+          void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the file, line and column represented by the given source
   /// location, as specified in a # line directive.
@@ -639,9 +639,10 @@
   late final _clang_getPresumedLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getPresumedLocation>>(
           'clang_getPresumedLocation');
-  late final _dart_clang_getPresumedLocation _clang_getPresumedLocation =
-      _clang_getPresumedLocation_ptr
-          .asFunction<_dart_clang_getPresumedLocation>();
+  late final _clang_getPresumedLocation =
+      _clang_getPresumedLocation_ptr.asFunction<
+          void Function(CXSourceLocation, ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Uint32>, ffi.Pointer<ffi.Uint32>)>();
 
   /// Legacy API to retrieve the file, line, column, and offset represented
   /// by the given source location.
@@ -651,7 +652,7 @@
   /// details.
   void clang_getInstantiationLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -668,9 +669,14 @@
   late final _clang_getInstantiationLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getInstantiationLocation>>(
           'clang_getInstantiationLocation');
-  late final _dart_clang_getInstantiationLocation
-      _clang_getInstantiationLocation = _clang_getInstantiationLocation_ptr
-          .asFunction<_dart_clang_getInstantiationLocation>();
+  late final _clang_getInstantiationLocation =
+      _clang_getInstantiationLocation_ptr.asFunction<
+          void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the file, line, column, and offset represented by
   /// the given source location.
@@ -694,7 +700,7 @@
   /// buffer to which the given source location points.
   void clang_getSpellingLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -711,9 +717,14 @@
   late final _clang_getSpellingLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getSpellingLocation>>(
           'clang_getSpellingLocation');
-  late final _dart_clang_getSpellingLocation _clang_getSpellingLocation =
-      _clang_getSpellingLocation_ptr
-          .asFunction<_dart_clang_getSpellingLocation>();
+  late final _clang_getSpellingLocation =
+      _clang_getSpellingLocation_ptr.asFunction<
+          void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the file, line, column, and offset represented by
   /// the given source location.
@@ -738,7 +749,7 @@
   /// buffer to which the given source location points.
   void clang_getFileLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -755,8 +766,13 @@
   late final _clang_getFileLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFileLocation>>(
           'clang_getFileLocation');
-  late final _dart_clang_getFileLocation _clang_getFileLocation =
-      _clang_getFileLocation_ptr.asFunction<_dart_clang_getFileLocation>();
+  late final _clang_getFileLocation = _clang_getFileLocation_ptr.asFunction<
+      void Function(
+          CXSourceLocation,
+          ffi.Pointer<CXFile>,
+          ffi.Pointer<ffi.Uint32>,
+          ffi.Pointer<ffi.Uint32>,
+          ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve a source location representing the first character within a
   /// source range.
@@ -771,8 +787,8 @@
   late final _clang_getRangeStart_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getRangeStart>>(
           'clang_getRangeStart');
-  late final _dart_clang_getRangeStart _clang_getRangeStart =
-      _clang_getRangeStart_ptr.asFunction<_dart_clang_getRangeStart>();
+  late final _clang_getRangeStart = _clang_getRangeStart_ptr
+      .asFunction<CXSourceLocation Function(CXSourceRange)>();
 
   /// Retrieve a source location representing the last character within a
   /// source range.
@@ -787,16 +803,16 @@
   late final _clang_getRangeEnd_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getRangeEnd>>(
           'clang_getRangeEnd');
-  late final _dart_clang_getRangeEnd _clang_getRangeEnd =
-      _clang_getRangeEnd_ptr.asFunction<_dart_clang_getRangeEnd>();
+  late final _clang_getRangeEnd = _clang_getRangeEnd_ptr
+      .asFunction<CXSourceLocation Function(CXSourceRange)>();
 
   /// Retrieve all ranges that were skipped by the preprocessor.
   ///
   /// The preprocessor will skip lines when they are surrounded by an
   /// if/ifdef/ifndef directive whose condition does not evaluate to true.
   ffi.Pointer<CXSourceRangeList> clang_getSkippedRanges(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
   ) {
     return _clang_getSkippedRanges(
       tu,
@@ -807,8 +823,8 @@
   late final _clang_getSkippedRanges_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getSkippedRanges>>(
           'clang_getSkippedRanges');
-  late final _dart_clang_getSkippedRanges _clang_getSkippedRanges =
-      _clang_getSkippedRanges_ptr.asFunction<_dart_clang_getSkippedRanges>();
+  late final _clang_getSkippedRanges = _clang_getSkippedRanges_ptr.asFunction<
+      ffi.Pointer<CXSourceRangeList> Function(CXTranslationUnit, CXFile)>();
 
   /// Retrieve all ranges from all files that were skipped by the
   /// preprocessor.
@@ -816,7 +832,7 @@
   /// The preprocessor will skip lines when they are surrounded by an
   /// if/ifdef/ifndef directive whose condition does not evaluate to true.
   ffi.Pointer<CXSourceRangeList> clang_getAllSkippedRanges(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
+    CXTranslationUnit tu,
   ) {
     return _clang_getAllSkippedRanges(
       tu,
@@ -826,9 +842,8 @@
   late final _clang_getAllSkippedRanges_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getAllSkippedRanges>>(
           'clang_getAllSkippedRanges');
-  late final _dart_clang_getAllSkippedRanges _clang_getAllSkippedRanges =
-      _clang_getAllSkippedRanges_ptr
-          .asFunction<_dart_clang_getAllSkippedRanges>();
+  late final _clang_getAllSkippedRanges = _clang_getAllSkippedRanges_ptr
+      .asFunction<ffi.Pointer<CXSourceRangeList> Function(CXTranslationUnit)>();
 
   /// Destroy the given \c CXSourceRangeList.
   void clang_disposeSourceRangeList(
@@ -842,13 +857,12 @@
   late final _clang_disposeSourceRangeList_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeSourceRangeList>>(
           'clang_disposeSourceRangeList');
-  late final _dart_clang_disposeSourceRangeList _clang_disposeSourceRangeList =
-      _clang_disposeSourceRangeList_ptr
-          .asFunction<_dart_clang_disposeSourceRangeList>();
+  late final _clang_disposeSourceRangeList = _clang_disposeSourceRangeList_ptr
+      .asFunction<void Function(ffi.Pointer<CXSourceRangeList>)>();
 
   /// Determine the number of diagnostics in a CXDiagnosticSet.
   int clang_getNumDiagnosticsInSet(
-    ffi.Pointer<ffi.Void> Diags,
+    CXDiagnosticSet Diags,
   ) {
     return _clang_getNumDiagnosticsInSet(
       Diags,
@@ -858,9 +872,8 @@
   late final _clang_getNumDiagnosticsInSet_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNumDiagnosticsInSet>>(
           'clang_getNumDiagnosticsInSet');
-  late final _dart_clang_getNumDiagnosticsInSet _clang_getNumDiagnosticsInSet =
-      _clang_getNumDiagnosticsInSet_ptr
-          .asFunction<_dart_clang_getNumDiagnosticsInSet>();
+  late final _clang_getNumDiagnosticsInSet = _clang_getNumDiagnosticsInSet_ptr
+      .asFunction<int Function(CXDiagnosticSet)>();
 
   /// Retrieve a diagnostic associated with the given CXDiagnosticSet.
   ///
@@ -869,8 +882,8 @@
   ///
   /// \returns the requested diagnostic. This diagnostic must be freed
   /// via a call to \c clang_disposeDiagnostic().
-  ffi.Pointer<ffi.Void> clang_getDiagnosticInSet(
-    ffi.Pointer<ffi.Void> Diags,
+  CXDiagnostic clang_getDiagnosticInSet(
+    CXDiagnosticSet Diags,
     int Index,
   ) {
     return _clang_getDiagnosticInSet(
@@ -882,9 +895,8 @@
   late final _clang_getDiagnosticInSet_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticInSet>>(
           'clang_getDiagnosticInSet');
-  late final _dart_clang_getDiagnosticInSet _clang_getDiagnosticInSet =
-      _clang_getDiagnosticInSet_ptr
-          .asFunction<_dart_clang_getDiagnosticInSet>();
+  late final _clang_getDiagnosticInSet = _clang_getDiagnosticInSet_ptr
+      .asFunction<CXDiagnostic Function(CXDiagnosticSet, int)>();
 
   /// Deserialize a set of diagnostics from a Clang diagnostics bitcode
   /// file.
@@ -897,7 +909,7 @@
   ///
   /// \returns A loaded CXDiagnosticSet if successful, and NULL otherwise.  These
   /// diagnostics should be released using clang_disposeDiagnosticSet().
-  ffi.Pointer<ffi.Void> clang_loadDiagnostics(
+  CXDiagnosticSet clang_loadDiagnostics(
     ffi.Pointer<ffi.Int8> file,
     ffi.Pointer<ffi.Int32> error,
     ffi.Pointer<CXString> errorString,
@@ -912,12 +924,13 @@
   late final _clang_loadDiagnostics_ptr =
       _lookup<ffi.NativeFunction<Native_clang_loadDiagnostics>>(
           'clang_loadDiagnostics');
-  late final _dart_clang_loadDiagnostics _clang_loadDiagnostics =
-      _clang_loadDiagnostics_ptr.asFunction<_dart_clang_loadDiagnostics>();
+  late final _clang_loadDiagnostics = _clang_loadDiagnostics_ptr.asFunction<
+      CXDiagnosticSet Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int32>,
+          ffi.Pointer<CXString>)>();
 
   /// Release a CXDiagnosticSet and all of its contained diagnostics.
   void clang_disposeDiagnosticSet(
-    ffi.Pointer<ffi.Void> Diags,
+    CXDiagnosticSet Diags,
   ) {
     return _clang_disposeDiagnosticSet(
       Diags,
@@ -927,16 +940,15 @@
   late final _clang_disposeDiagnosticSet_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeDiagnosticSet>>(
           'clang_disposeDiagnosticSet');
-  late final _dart_clang_disposeDiagnosticSet _clang_disposeDiagnosticSet =
-      _clang_disposeDiagnosticSet_ptr
-          .asFunction<_dart_clang_disposeDiagnosticSet>();
+  late final _clang_disposeDiagnosticSet = _clang_disposeDiagnosticSet_ptr
+      .asFunction<void Function(CXDiagnosticSet)>();
 
   /// Retrieve the child diagnostics of a CXDiagnostic.
   ///
   /// This CXDiagnosticSet does not need to be released by
   /// clang_disposeDiagnosticSet.
-  ffi.Pointer<ffi.Void> clang_getChildDiagnostics(
-    ffi.Pointer<ffi.Void> D,
+  CXDiagnosticSet clang_getChildDiagnostics(
+    CXDiagnostic D,
   ) {
     return _clang_getChildDiagnostics(
       D,
@@ -946,14 +958,13 @@
   late final _clang_getChildDiagnostics_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getChildDiagnostics>>(
           'clang_getChildDiagnostics');
-  late final _dart_clang_getChildDiagnostics _clang_getChildDiagnostics =
-      _clang_getChildDiagnostics_ptr
-          .asFunction<_dart_clang_getChildDiagnostics>();
+  late final _clang_getChildDiagnostics = _clang_getChildDiagnostics_ptr
+      .asFunction<CXDiagnosticSet Function(CXDiagnostic)>();
 
   /// Determine the number of diagnostics produced for the given
   /// translation unit.
   int clang_getNumDiagnostics(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+    CXTranslationUnit Unit,
   ) {
     return _clang_getNumDiagnostics(
       Unit,
@@ -963,8 +974,8 @@
   late final _clang_getNumDiagnostics_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNumDiagnostics>>(
           'clang_getNumDiagnostics');
-  late final _dart_clang_getNumDiagnostics _clang_getNumDiagnostics =
-      _clang_getNumDiagnostics_ptr.asFunction<_dart_clang_getNumDiagnostics>();
+  late final _clang_getNumDiagnostics = _clang_getNumDiagnostics_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Retrieve a diagnostic associated with the given translation unit.
   ///
@@ -973,8 +984,8 @@
   ///
   /// \returns the requested diagnostic. This diagnostic must be freed
   /// via a call to \c clang_disposeDiagnostic().
-  ffi.Pointer<ffi.Void> clang_getDiagnostic(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+  CXDiagnostic clang_getDiagnostic(
+    CXTranslationUnit Unit,
     int Index,
   ) {
     return _clang_getDiagnostic(
@@ -986,15 +997,15 @@
   late final _clang_getDiagnostic_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnostic>>(
           'clang_getDiagnostic');
-  late final _dart_clang_getDiagnostic _clang_getDiagnostic =
-      _clang_getDiagnostic_ptr.asFunction<_dart_clang_getDiagnostic>();
+  late final _clang_getDiagnostic = _clang_getDiagnostic_ptr
+      .asFunction<CXDiagnostic Function(CXTranslationUnit, int)>();
 
   /// Retrieve the complete set of diagnostics associated with a
   /// translation unit.
   ///
   /// \param Unit the translation unit to query.
-  ffi.Pointer<ffi.Void> clang_getDiagnosticSetFromTU(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+  CXDiagnosticSet clang_getDiagnosticSetFromTU(
+    CXTranslationUnit Unit,
   ) {
     return _clang_getDiagnosticSetFromTU(
       Unit,
@@ -1004,13 +1015,12 @@
   late final _clang_getDiagnosticSetFromTU_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticSetFromTU>>(
           'clang_getDiagnosticSetFromTU');
-  late final _dart_clang_getDiagnosticSetFromTU _clang_getDiagnosticSetFromTU =
-      _clang_getDiagnosticSetFromTU_ptr
-          .asFunction<_dart_clang_getDiagnosticSetFromTU>();
+  late final _clang_getDiagnosticSetFromTU = _clang_getDiagnosticSetFromTU_ptr
+      .asFunction<CXDiagnosticSet Function(CXTranslationUnit)>();
 
   /// Destroy a diagnostic.
   void clang_disposeDiagnostic(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
   ) {
     return _clang_disposeDiagnostic(
       Diagnostic,
@@ -1020,8 +1030,8 @@
   late final _clang_disposeDiagnostic_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeDiagnostic>>(
           'clang_disposeDiagnostic');
-  late final _dart_clang_disposeDiagnostic _clang_disposeDiagnostic =
-      _clang_disposeDiagnostic_ptr.asFunction<_dart_clang_disposeDiagnostic>();
+  late final _clang_disposeDiagnostic =
+      _clang_disposeDiagnostic_ptr.asFunction<void Function(CXDiagnostic)>();
 
   /// Format the given diagnostic in a manner that is suitable for display.
   ///
@@ -1037,7 +1047,7 @@
   ///
   /// \returns A new string containing for formatted diagnostic.
   CXString clang_formatDiagnostic(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
     int Options,
   ) {
     return _clang_formatDiagnostic(
@@ -1049,8 +1059,8 @@
   late final _clang_formatDiagnostic_ptr =
       _lookup<ffi.NativeFunction<Native_clang_formatDiagnostic>>(
           'clang_formatDiagnostic');
-  late final _dart_clang_formatDiagnostic _clang_formatDiagnostic =
-      _clang_formatDiagnostic_ptr.asFunction<_dart_clang_formatDiagnostic>();
+  late final _clang_formatDiagnostic = _clang_formatDiagnostic_ptr
+      .asFunction<CXString Function(CXDiagnostic, int)>();
 
   /// Retrieve the set of display options most similar to the
   /// default behavior of the clang compiler.
@@ -1064,14 +1074,12 @@
   late final _clang_defaultDiagnosticDisplayOptions_ptr =
       _lookup<ffi.NativeFunction<Native_clang_defaultDiagnosticDisplayOptions>>(
           'clang_defaultDiagnosticDisplayOptions');
-  late final _dart_clang_defaultDiagnosticDisplayOptions
-      _clang_defaultDiagnosticDisplayOptions =
-      _clang_defaultDiagnosticDisplayOptions_ptr
-          .asFunction<_dart_clang_defaultDiagnosticDisplayOptions>();
+  late final _clang_defaultDiagnosticDisplayOptions =
+      _clang_defaultDiagnosticDisplayOptions_ptr.asFunction<int Function()>();
 
   /// Determine the severity of the given diagnostic.
   int clang_getDiagnosticSeverity(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticSeverity(
       arg0,
@@ -1081,16 +1089,15 @@
   late final _clang_getDiagnosticSeverity_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticSeverity>>(
           'clang_getDiagnosticSeverity');
-  late final _dart_clang_getDiagnosticSeverity _clang_getDiagnosticSeverity =
-      _clang_getDiagnosticSeverity_ptr
-          .asFunction<_dart_clang_getDiagnosticSeverity>();
+  late final _clang_getDiagnosticSeverity =
+      _clang_getDiagnosticSeverity_ptr.asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve the source location of the given diagnostic.
   ///
   /// This location is where Clang would print the caret ('^') when
   /// displaying the diagnostic on the command line.
   CXSourceLocation clang_getDiagnosticLocation(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticLocation(
       arg0,
@@ -1100,13 +1107,12 @@
   late final _clang_getDiagnosticLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticLocation>>(
           'clang_getDiagnosticLocation');
-  late final _dart_clang_getDiagnosticLocation _clang_getDiagnosticLocation =
-      _clang_getDiagnosticLocation_ptr
-          .asFunction<_dart_clang_getDiagnosticLocation>();
+  late final _clang_getDiagnosticLocation = _clang_getDiagnosticLocation_ptr
+      .asFunction<CXSourceLocation Function(CXDiagnostic)>();
 
   /// Retrieve the text of the given diagnostic.
   CXString clang_getDiagnosticSpelling(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticSpelling(
       arg0,
@@ -1116,9 +1122,8 @@
   late final _clang_getDiagnosticSpelling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticSpelling>>(
           'clang_getDiagnosticSpelling');
-  late final _dart_clang_getDiagnosticSpelling _clang_getDiagnosticSpelling =
-      _clang_getDiagnosticSpelling_ptr
-          .asFunction<_dart_clang_getDiagnosticSpelling>();
+  late final _clang_getDiagnosticSpelling = _clang_getDiagnosticSpelling_ptr
+      .asFunction<CXString Function(CXDiagnostic)>();
 
   /// Retrieve the name of the command-line option that enabled this
   /// diagnostic.
@@ -1131,7 +1136,7 @@
   /// \returns A string that contains the command-line option used to enable this
   /// warning, such as "-Wconversion" or "-pedantic".
   CXString clang_getDiagnosticOption(
-    ffi.Pointer<ffi.Void> Diag,
+    CXDiagnostic Diag,
     ffi.Pointer<CXString> Disable,
   ) {
     return _clang_getDiagnosticOption(
@@ -1143,9 +1148,8 @@
   late final _clang_getDiagnosticOption_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticOption>>(
           'clang_getDiagnosticOption');
-  late final _dart_clang_getDiagnosticOption _clang_getDiagnosticOption =
-      _clang_getDiagnosticOption_ptr
-          .asFunction<_dart_clang_getDiagnosticOption>();
+  late final _clang_getDiagnosticOption = _clang_getDiagnosticOption_ptr
+      .asFunction<CXString Function(CXDiagnostic, ffi.Pointer<CXString>)>();
 
   /// Retrieve the category number for this diagnostic.
   ///
@@ -1156,7 +1160,7 @@
   /// \returns The number of the category that contains this diagnostic, or zero
   /// if this diagnostic is uncategorized.
   int clang_getDiagnosticCategory(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticCategory(
       arg0,
@@ -1166,9 +1170,8 @@
   late final _clang_getDiagnosticCategory_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticCategory>>(
           'clang_getDiagnosticCategory');
-  late final _dart_clang_getDiagnosticCategory _clang_getDiagnosticCategory =
-      _clang_getDiagnosticCategory_ptr
-          .asFunction<_dart_clang_getDiagnosticCategory>();
+  late final _clang_getDiagnosticCategory =
+      _clang_getDiagnosticCategory_ptr.asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve the name of a particular diagnostic category.  This
   /// is now deprecated.  Use clang_getDiagnosticCategoryText()
@@ -1189,15 +1192,14 @@
   late final _clang_getDiagnosticCategoryName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticCategoryName>>(
           'clang_getDiagnosticCategoryName');
-  late final _dart_clang_getDiagnosticCategoryName
-      _clang_getDiagnosticCategoryName = _clang_getDiagnosticCategoryName_ptr
-          .asFunction<_dart_clang_getDiagnosticCategoryName>();
+  late final _clang_getDiagnosticCategoryName =
+      _clang_getDiagnosticCategoryName_ptr.asFunction<CXString Function(int)>();
 
   /// Retrieve the diagnostic category text for a given diagnostic.
   ///
   /// \returns The text of the given diagnostic category.
   CXString clang_getDiagnosticCategoryText(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticCategoryText(
       arg0,
@@ -1207,14 +1209,14 @@
   late final _clang_getDiagnosticCategoryText_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticCategoryText>>(
           'clang_getDiagnosticCategoryText');
-  late final _dart_clang_getDiagnosticCategoryText
-      _clang_getDiagnosticCategoryText = _clang_getDiagnosticCategoryText_ptr
-          .asFunction<_dart_clang_getDiagnosticCategoryText>();
+  late final _clang_getDiagnosticCategoryText =
+      _clang_getDiagnosticCategoryText_ptr
+          .asFunction<CXString Function(CXDiagnostic)>();
 
   /// Determine the number of source ranges associated with the given
   /// diagnostic.
   int clang_getDiagnosticNumRanges(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticNumRanges(
       arg0,
@@ -1224,9 +1226,8 @@
   late final _clang_getDiagnosticNumRanges_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticNumRanges>>(
           'clang_getDiagnosticNumRanges');
-  late final _dart_clang_getDiagnosticNumRanges _clang_getDiagnosticNumRanges =
-      _clang_getDiagnosticNumRanges_ptr
-          .asFunction<_dart_clang_getDiagnosticNumRanges>();
+  late final _clang_getDiagnosticNumRanges = _clang_getDiagnosticNumRanges_ptr
+      .asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve a source range associated with the diagnostic.
   ///
@@ -1240,7 +1241,7 @@
   ///
   /// \returns the requested source range.
   CXSourceRange clang_getDiagnosticRange(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
     int Range,
   ) {
     return _clang_getDiagnosticRange(
@@ -1252,14 +1253,13 @@
   late final _clang_getDiagnosticRange_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticRange>>(
           'clang_getDiagnosticRange');
-  late final _dart_clang_getDiagnosticRange _clang_getDiagnosticRange =
-      _clang_getDiagnosticRange_ptr
-          .asFunction<_dart_clang_getDiagnosticRange>();
+  late final _clang_getDiagnosticRange = _clang_getDiagnosticRange_ptr
+      .asFunction<CXSourceRange Function(CXDiagnostic, int)>();
 
   /// Determine the number of fix-it hints associated with the
   /// given diagnostic.
   int clang_getDiagnosticNumFixIts(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
   ) {
     return _clang_getDiagnosticNumFixIts(
       Diagnostic,
@@ -1269,9 +1269,8 @@
   late final _clang_getDiagnosticNumFixIts_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticNumFixIts>>(
           'clang_getDiagnosticNumFixIts');
-  late final _dart_clang_getDiagnosticNumFixIts _clang_getDiagnosticNumFixIts =
-      _clang_getDiagnosticNumFixIts_ptr
-          .asFunction<_dart_clang_getDiagnosticNumFixIts>();
+  late final _clang_getDiagnosticNumFixIts = _clang_getDiagnosticNumFixIts_ptr
+      .asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve the replacement information for a given fix-it.
   ///
@@ -1297,7 +1296,7 @@
   /// \returns A string containing text that should be replace the source
   /// code indicated by the \c ReplacementRange.
   CXString clang_getDiagnosticFixIt(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
     int FixIt,
     ffi.Pointer<CXSourceRange> ReplacementRange,
   ) {
@@ -1311,13 +1310,13 @@
   late final _clang_getDiagnosticFixIt_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDiagnosticFixIt>>(
           'clang_getDiagnosticFixIt');
-  late final _dart_clang_getDiagnosticFixIt _clang_getDiagnosticFixIt =
-      _clang_getDiagnosticFixIt_ptr
-          .asFunction<_dart_clang_getDiagnosticFixIt>();
+  late final _clang_getDiagnosticFixIt =
+      _clang_getDiagnosticFixIt_ptr.asFunction<
+          CXString Function(CXDiagnostic, int, ffi.Pointer<CXSourceRange>)>();
 
   /// Get the original translation unit source file name.
   CXString clang_getTranslationUnitSpelling(
-    ffi.Pointer<CXTranslationUnitImpl> CTUnit,
+    CXTranslationUnit CTUnit,
   ) {
     return _clang_getTranslationUnitSpelling(
       CTUnit,
@@ -1327,9 +1326,9 @@
   late final _clang_getTranslationUnitSpelling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTranslationUnitSpelling>>(
           'clang_getTranslationUnitSpelling');
-  late final _dart_clang_getTranslationUnitSpelling
-      _clang_getTranslationUnitSpelling = _clang_getTranslationUnitSpelling_ptr
-          .asFunction<_dart_clang_getTranslationUnitSpelling>();
+  late final _clang_getTranslationUnitSpelling =
+      _clang_getTranslationUnitSpelling_ptr
+          .asFunction<CXString Function(CXTranslationUnit)>();
 
   /// Return the CXTranslationUnit for a given source file and the provided
   /// command line arguments one would pass to the compiler.
@@ -1369,8 +1368,8 @@
   /// those files.  The contents and name of these files (as specified by
   /// CXUnsavedFile) are copied when necessary, so the client only needs to
   /// guarantee their validity until the call to this function returns.
-  ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnitFromSourceFile(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXTranslationUnit clang_createTranslationUnitFromSourceFile(
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     int num_clang_command_line_args,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
@@ -1390,17 +1389,22 @@
   late final _clang_createTranslationUnitFromSourceFile_ptr = _lookup<
           ffi.NativeFunction<Native_clang_createTranslationUnitFromSourceFile>>(
       'clang_createTranslationUnitFromSourceFile');
-  late final _dart_clang_createTranslationUnitFromSourceFile
-      _clang_createTranslationUnitFromSourceFile =
-      _clang_createTranslationUnitFromSourceFile_ptr
-          .asFunction<_dart_clang_createTranslationUnitFromSourceFile>();
+  late final _clang_createTranslationUnitFromSourceFile =
+      _clang_createTranslationUnitFromSourceFile_ptr.asFunction<
+          CXTranslationUnit Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              int,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>)>();
 
   /// Same as \c clang_createTranslationUnit2, but returns
   /// the \c CXTranslationUnit instead of an error code.  In case of an error this
   /// routine returns a \c NULL \c CXTranslationUnit, without further detailed
   /// error codes.
-  ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnit(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXTranslationUnit clang_createTranslationUnit(
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> ast_filename,
   ) {
     return _clang_createTranslationUnit(
@@ -1412,9 +1416,8 @@
   late final _clang_createTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_createTranslationUnit>>(
           'clang_createTranslationUnit');
-  late final _dart_clang_createTranslationUnit _clang_createTranslationUnit =
-      _clang_createTranslationUnit_ptr
-          .asFunction<_dart_clang_createTranslationUnit>();
+  late final _clang_createTranslationUnit = _clang_createTranslationUnit_ptr
+      .asFunction<CXTranslationUnit Function(CXIndex, ffi.Pointer<ffi.Int8>)>();
 
   /// Create a translation unit from an AST file (\c -emit-ast).
   ///
@@ -1423,9 +1426,9 @@
   ///
   /// \returns Zero on success, otherwise returns an error code.
   int clang_createTranslationUnit2(
-    ffi.Pointer<ffi.Void> CIdx,
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> ast_filename,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
   ) {
     return _clang_createTranslationUnit2(
       CIdx,
@@ -1437,9 +1440,10 @@
   late final _clang_createTranslationUnit2_ptr =
       _lookup<ffi.NativeFunction<Native_clang_createTranslationUnit2>>(
           'clang_createTranslationUnit2');
-  late final _dart_clang_createTranslationUnit2 _clang_createTranslationUnit2 =
-      _clang_createTranslationUnit2_ptr
-          .asFunction<_dart_clang_createTranslationUnit2>();
+  late final _clang_createTranslationUnit2 =
+      _clang_createTranslationUnit2_ptr.asFunction<
+          int Function(CXIndex, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<CXTranslationUnit>)>();
 
   /// Returns the set of flags that is suitable for parsing a translation
   /// unit that is being edited.
@@ -1459,17 +1463,16 @@
           ffi.NativeFunction<
               Native_clang_defaultEditingTranslationUnitOptions>>(
       'clang_defaultEditingTranslationUnitOptions');
-  late final _dart_clang_defaultEditingTranslationUnitOptions
-      _clang_defaultEditingTranslationUnitOptions =
+  late final _clang_defaultEditingTranslationUnitOptions =
       _clang_defaultEditingTranslationUnitOptions_ptr
-          .asFunction<_dart_clang_defaultEditingTranslationUnitOptions>();
+          .asFunction<int Function()>();
 
   /// Same as \c clang_parseTranslationUnit2, but returns
   /// the \c CXTranslationUnit instead of an error code.  In case of an error this
   /// routine returns a \c NULL \c CXTranslationUnit, without further detailed
   /// error codes.
-  ffi.Pointer<CXTranslationUnitImpl> clang_parseTranslationUnit(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXTranslationUnit clang_parseTranslationUnit(
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
     int num_command_line_args,
@@ -1491,9 +1494,16 @@
   late final _clang_parseTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_parseTranslationUnit>>(
           'clang_parseTranslationUnit');
-  late final _dart_clang_parseTranslationUnit _clang_parseTranslationUnit =
-      _clang_parseTranslationUnit_ptr
-          .asFunction<_dart_clang_parseTranslationUnit>();
+  late final _clang_parseTranslationUnit =
+      _clang_parseTranslationUnit_ptr.asFunction<
+          CXTranslationUnit Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              int)>();
 
   /// Parse the given source file and the translation unit corresponding
   /// to that file.
@@ -1538,14 +1548,14 @@
   ///
   /// \returns Zero on success, otherwise returns an error code.
   int clang_parseTranslationUnit2(
-    ffi.Pointer<ffi.Void> CIdx,
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
     int options,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
   ) {
     return _clang_parseTranslationUnit2(
       CIdx,
@@ -1562,22 +1572,30 @@
   late final _clang_parseTranslationUnit2_ptr =
       _lookup<ffi.NativeFunction<Native_clang_parseTranslationUnit2>>(
           'clang_parseTranslationUnit2');
-  late final _dart_clang_parseTranslationUnit2 _clang_parseTranslationUnit2 =
-      _clang_parseTranslationUnit2_ptr
-          .asFunction<_dart_clang_parseTranslationUnit2>();
+  late final _clang_parseTranslationUnit2 =
+      _clang_parseTranslationUnit2_ptr.asFunction<
+          int Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              int,
+              ffi.Pointer<CXTranslationUnit>)>();
 
   /// Same as clang_parseTranslationUnit2 but requires a full command line
   /// for \c command_line_args including argv[0]. This is useful if the standard
   /// library paths are relative to the binary.
   int clang_parseTranslationUnit2FullArgv(
-    ffi.Pointer<ffi.Void> CIdx,
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
     int options,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
   ) {
     return _clang_parseTranslationUnit2FullArgv(
       CIdx,
@@ -1594,10 +1612,17 @@
   late final _clang_parseTranslationUnit2FullArgv_ptr =
       _lookup<ffi.NativeFunction<Native_clang_parseTranslationUnit2FullArgv>>(
           'clang_parseTranslationUnit2FullArgv');
-  late final _dart_clang_parseTranslationUnit2FullArgv
-      _clang_parseTranslationUnit2FullArgv =
-      _clang_parseTranslationUnit2FullArgv_ptr
-          .asFunction<_dart_clang_parseTranslationUnit2FullArgv>();
+  late final _clang_parseTranslationUnit2FullArgv =
+      _clang_parseTranslationUnit2FullArgv_ptr.asFunction<
+          int Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              int,
+              ffi.Pointer<CXTranslationUnit>)>();
 
   /// Returns the set of flags that is suitable for saving a translation
   /// unit.
@@ -1607,7 +1632,7 @@
   /// set contains an unspecified set of options that save translation units with
   /// the most commonly-requested data.
   int clang_defaultSaveOptions(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
   ) {
     return _clang_defaultSaveOptions(
       TU,
@@ -1617,9 +1642,8 @@
   late final _clang_defaultSaveOptions_ptr =
       _lookup<ffi.NativeFunction<Native_clang_defaultSaveOptions>>(
           'clang_defaultSaveOptions');
-  late final _dart_clang_defaultSaveOptions _clang_defaultSaveOptions =
-      _clang_defaultSaveOptions_ptr
-          .asFunction<_dart_clang_defaultSaveOptions>();
+  late final _clang_defaultSaveOptions = _clang_defaultSaveOptions_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Saves a translation unit into a serialized representation of
   /// that translation unit on disk.
@@ -1643,7 +1667,7 @@
   /// enumeration. Zero (CXSaveError_None) indicates that the translation unit was
   /// saved successfully, while a non-zero value indicates that a problem occurred.
   int clang_saveTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<ffi.Int8> FileName,
     int options,
   ) {
@@ -1657,9 +1681,9 @@
   late final _clang_saveTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_saveTranslationUnit>>(
           'clang_saveTranslationUnit');
-  late final _dart_clang_saveTranslationUnit _clang_saveTranslationUnit =
-      _clang_saveTranslationUnit_ptr
-          .asFunction<_dart_clang_saveTranslationUnit>();
+  late final _clang_saveTranslationUnit =
+      _clang_saveTranslationUnit_ptr.asFunction<
+          int Function(CXTranslationUnit, ffi.Pointer<ffi.Int8>, int)>();
 
   /// Suspend a translation unit in order to free memory associated with it.
   ///
@@ -1667,7 +1691,7 @@
   /// side does not support any other calls than \c clang_reparseTranslationUnit
   /// to resume it or \c clang_disposeTranslationUnit to dispose it completely.
   int clang_suspendTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_suspendTranslationUnit(
       arg0,
@@ -1677,13 +1701,12 @@
   late final _clang_suspendTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_suspendTranslationUnit>>(
           'clang_suspendTranslationUnit');
-  late final _dart_clang_suspendTranslationUnit _clang_suspendTranslationUnit =
-      _clang_suspendTranslationUnit_ptr
-          .asFunction<_dart_clang_suspendTranslationUnit>();
+  late final _clang_suspendTranslationUnit = _clang_suspendTranslationUnit_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Destroy the specified CXTranslationUnit object.
   void clang_disposeTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_disposeTranslationUnit(
       arg0,
@@ -1693,9 +1716,8 @@
   late final _clang_disposeTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeTranslationUnit>>(
           'clang_disposeTranslationUnit');
-  late final _dart_clang_disposeTranslationUnit _clang_disposeTranslationUnit =
-      _clang_disposeTranslationUnit_ptr
-          .asFunction<_dart_clang_disposeTranslationUnit>();
+  late final _clang_disposeTranslationUnit = _clang_disposeTranslationUnit_ptr
+      .asFunction<void Function(CXTranslationUnit)>();
 
   /// Returns the set of flags that is suitable for reparsing a translation
   /// unit.
@@ -1706,7 +1728,7 @@
   /// of reparsing. The set of optimizations enabled may change from one version
   /// to the next.
   int clang_defaultReparseOptions(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
   ) {
     return _clang_defaultReparseOptions(
       TU,
@@ -1716,9 +1738,8 @@
   late final _clang_defaultReparseOptions_ptr =
       _lookup<ffi.NativeFunction<Native_clang_defaultReparseOptions>>(
           'clang_defaultReparseOptions');
-  late final _dart_clang_defaultReparseOptions _clang_defaultReparseOptions =
-      _clang_defaultReparseOptions_ptr
-          .asFunction<_dart_clang_defaultReparseOptions>();
+  late final _clang_defaultReparseOptions = _clang_defaultReparseOptions_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Reparse the source files that produced this translation unit.
   ///
@@ -1758,7 +1779,7 @@
   /// \c clang_disposeTranslationUnit(TU).  The error codes returned by this
   /// routine are described by the \c CXErrorCode enum.
   int clang_reparseTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     int num_unsaved_files,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int options,
@@ -1774,9 +1795,10 @@
   late final _clang_reparseTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_reparseTranslationUnit>>(
           'clang_reparseTranslationUnit');
-  late final _dart_clang_reparseTranslationUnit _clang_reparseTranslationUnit =
-      _clang_reparseTranslationUnit_ptr
-          .asFunction<_dart_clang_reparseTranslationUnit>();
+  late final _clang_reparseTranslationUnit =
+      _clang_reparseTranslationUnit_ptr.asFunction<
+          int Function(
+              CXTranslationUnit, int, ffi.Pointer<CXUnsavedFile>, int)>();
 
   /// Returns the human-readable null-terminated C string that represents
   /// the name of the memory category.  This string should never be freed.
@@ -1791,14 +1813,13 @@
   late final _clang_getTUResourceUsageName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTUResourceUsageName>>(
           'clang_getTUResourceUsageName');
-  late final _dart_clang_getTUResourceUsageName _clang_getTUResourceUsageName =
-      _clang_getTUResourceUsageName_ptr
-          .asFunction<_dart_clang_getTUResourceUsageName>();
+  late final _clang_getTUResourceUsageName = _clang_getTUResourceUsageName_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(int)>();
 
   /// Return the memory usage of a translation unit.  This object
   /// should be released with clang_disposeCXTUResourceUsage().
   CXTUResourceUsage clang_getCXTUResourceUsage(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
   ) {
     return _clang_getCXTUResourceUsage(
       TU,
@@ -1808,9 +1829,8 @@
   late final _clang_getCXTUResourceUsage_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCXTUResourceUsage>>(
           'clang_getCXTUResourceUsage');
-  late final _dart_clang_getCXTUResourceUsage _clang_getCXTUResourceUsage =
-      _clang_getCXTUResourceUsage_ptr
-          .asFunction<_dart_clang_getCXTUResourceUsage>();
+  late final _clang_getCXTUResourceUsage = _clang_getCXTUResourceUsage_ptr
+      .asFunction<CXTUResourceUsage Function(CXTranslationUnit)>();
 
   void clang_disposeCXTUResourceUsage(
     CXTUResourceUsage usage,
@@ -1823,15 +1843,15 @@
   late final _clang_disposeCXTUResourceUsage_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeCXTUResourceUsage>>(
           'clang_disposeCXTUResourceUsage');
-  late final _dart_clang_disposeCXTUResourceUsage
-      _clang_disposeCXTUResourceUsage = _clang_disposeCXTUResourceUsage_ptr
-          .asFunction<_dart_clang_disposeCXTUResourceUsage>();
+  late final _clang_disposeCXTUResourceUsage =
+      _clang_disposeCXTUResourceUsage_ptr
+          .asFunction<void Function(CXTUResourceUsage)>();
 
   /// Get target information for this translation unit.
   ///
   /// The CXTargetInfo object cannot outlive the CXTranslationUnit object.
-  ffi.Pointer<CXTargetInfoImpl> clang_getTranslationUnitTargetInfo(
-    ffi.Pointer<CXTranslationUnitImpl> CTUnit,
+  CXTargetInfo clang_getTranslationUnitTargetInfo(
+    CXTranslationUnit CTUnit,
   ) {
     return _clang_getTranslationUnitTargetInfo(
       CTUnit,
@@ -1841,14 +1861,13 @@
   late final _clang_getTranslationUnitTargetInfo_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTranslationUnitTargetInfo>>(
           'clang_getTranslationUnitTargetInfo');
-  late final _dart_clang_getTranslationUnitTargetInfo
-      _clang_getTranslationUnitTargetInfo =
+  late final _clang_getTranslationUnitTargetInfo =
       _clang_getTranslationUnitTargetInfo_ptr
-          .asFunction<_dart_clang_getTranslationUnitTargetInfo>();
+          .asFunction<CXTargetInfo Function(CXTranslationUnit)>();
 
   /// Destroy the CXTargetInfo object.
   void clang_TargetInfo_dispose(
-    ffi.Pointer<CXTargetInfoImpl> Info,
+    CXTargetInfo Info,
   ) {
     return _clang_TargetInfo_dispose(
       Info,
@@ -1858,15 +1877,14 @@
   late final _clang_TargetInfo_dispose_ptr =
       _lookup<ffi.NativeFunction<Native_clang_TargetInfo_dispose>>(
           'clang_TargetInfo_dispose');
-  late final _dart_clang_TargetInfo_dispose _clang_TargetInfo_dispose =
-      _clang_TargetInfo_dispose_ptr
-          .asFunction<_dart_clang_TargetInfo_dispose>();
+  late final _clang_TargetInfo_dispose =
+      _clang_TargetInfo_dispose_ptr.asFunction<void Function(CXTargetInfo)>();
 
   /// Get the normalized target triple as a string.
   ///
   /// Returns the empty string in case of any error.
   CXString clang_TargetInfo_getTriple(
-    ffi.Pointer<CXTargetInfoImpl> Info,
+    CXTargetInfo Info,
   ) {
     return _clang_TargetInfo_getTriple(
       Info,
@@ -1876,15 +1894,14 @@
   late final _clang_TargetInfo_getTriple_ptr =
       _lookup<ffi.NativeFunction<Native_clang_TargetInfo_getTriple>>(
           'clang_TargetInfo_getTriple');
-  late final _dart_clang_TargetInfo_getTriple _clang_TargetInfo_getTriple =
-      _clang_TargetInfo_getTriple_ptr
-          .asFunction<_dart_clang_TargetInfo_getTriple>();
+  late final _clang_TargetInfo_getTriple = _clang_TargetInfo_getTriple_ptr
+      .asFunction<CXString Function(CXTargetInfo)>();
 
   /// Get the pointer width of the target in bits.
   ///
   /// Returns -1 in case of error.
   int clang_TargetInfo_getPointerWidth(
-    ffi.Pointer<CXTargetInfoImpl> Info,
+    CXTargetInfo Info,
   ) {
     return _clang_TargetInfo_getPointerWidth(
       Info,
@@ -1894,9 +1911,9 @@
   late final _clang_TargetInfo_getPointerWidth_ptr =
       _lookup<ffi.NativeFunction<Native_clang_TargetInfo_getPointerWidth>>(
           'clang_TargetInfo_getPointerWidth');
-  late final _dart_clang_TargetInfo_getPointerWidth
-      _clang_TargetInfo_getPointerWidth = _clang_TargetInfo_getPointerWidth_ptr
-          .asFunction<_dart_clang_TargetInfo_getPointerWidth>();
+  late final _clang_TargetInfo_getPointerWidth =
+      _clang_TargetInfo_getPointerWidth_ptr
+          .asFunction<int Function(CXTargetInfo)>();
 
   /// Retrieve the NULL cursor, which represents no entity.
   CXCursor clang_getNullCursor() {
@@ -1906,15 +1923,15 @@
   late final _clang_getNullCursor_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNullCursor>>(
           'clang_getNullCursor');
-  late final _dart_clang_getNullCursor _clang_getNullCursor =
-      _clang_getNullCursor_ptr.asFunction<_dart_clang_getNullCursor>();
+  late final _clang_getNullCursor =
+      _clang_getNullCursor_ptr.asFunction<CXCursor Function()>();
 
   /// Retrieve the cursor that represents the given translation unit.
   ///
   /// The translation unit cursor can be used to start traversing the
   /// various declarations within the given translation unit.
   CXCursor clang_getTranslationUnitCursor(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_getTranslationUnitCursor(
       arg0,
@@ -1924,9 +1941,9 @@
   late final _clang_getTranslationUnitCursor_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTranslationUnitCursor>>(
           'clang_getTranslationUnitCursor');
-  late final _dart_clang_getTranslationUnitCursor
-      _clang_getTranslationUnitCursor = _clang_getTranslationUnitCursor_ptr
-          .asFunction<_dart_clang_getTranslationUnitCursor>();
+  late final _clang_getTranslationUnitCursor =
+      _clang_getTranslationUnitCursor_ptr
+          .asFunction<CXCursor Function(CXTranslationUnit)>();
 
   /// Determine whether two cursors are equivalent.
   int clang_equalCursors(
@@ -1942,8 +1959,8 @@
   late final _clang_equalCursors_ptr =
       _lookup<ffi.NativeFunction<Native_clang_equalCursors>>(
           'clang_equalCursors');
-  late final _dart_clang_equalCursors _clang_equalCursors =
-      _clang_equalCursors_ptr.asFunction<_dart_clang_equalCursors>();
+  late final _clang_equalCursors =
+      _clang_equalCursors_ptr.asFunction<int Function(CXCursor, CXCursor)>();
 
   /// Returns non-zero if \p cursor is null.
   int clang_Cursor_isNull(
@@ -1957,8 +1974,8 @@
   late final _clang_Cursor_isNull_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isNull>>(
           'clang_Cursor_isNull');
-  late final _dart_clang_Cursor_isNull _clang_Cursor_isNull =
-      _clang_Cursor_isNull_ptr.asFunction<_dart_clang_Cursor_isNull>();
+  late final _clang_Cursor_isNull =
+      _clang_Cursor_isNull_ptr.asFunction<int Function(CXCursor)>();
 
   /// Compute a hash value for the given cursor.
   int clang_hashCursor(
@@ -1971,8 +1988,8 @@
 
   late final _clang_hashCursor_ptr =
       _lookup<ffi.NativeFunction<Native_clang_hashCursor>>('clang_hashCursor');
-  late final _dart_clang_hashCursor _clang_hashCursor =
-      _clang_hashCursor_ptr.asFunction<_dart_clang_hashCursor>();
+  late final _clang_hashCursor =
+      _clang_hashCursor_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the kind of the given cursor.
   int clang_getCursorKind(
@@ -1986,8 +2003,8 @@
   late final _clang_getCursorKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorKind>>(
           'clang_getCursorKind');
-  late final _dart_clang_getCursorKind _clang_getCursorKind =
-      _clang_getCursorKind_ptr.asFunction<_dart_clang_getCursorKind>();
+  late final _clang_getCursorKind =
+      _clang_getCursorKind_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor kind represents a declaration.
   int clang_isDeclaration(
@@ -2001,8 +2018,8 @@
   late final _clang_isDeclaration_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isDeclaration>>(
           'clang_isDeclaration');
-  late final _dart_clang_isDeclaration _clang_isDeclaration =
-      _clang_isDeclaration_ptr.asFunction<_dart_clang_isDeclaration>();
+  late final _clang_isDeclaration =
+      _clang_isDeclaration_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given declaration is invalid.
   ///
@@ -2021,9 +2038,8 @@
   late final _clang_isInvalidDeclaration_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isInvalidDeclaration>>(
           'clang_isInvalidDeclaration');
-  late final _dart_clang_isInvalidDeclaration _clang_isInvalidDeclaration =
-      _clang_isInvalidDeclaration_ptr
-          .asFunction<_dart_clang_isInvalidDeclaration>();
+  late final _clang_isInvalidDeclaration =
+      _clang_isInvalidDeclaration_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor kind represents a simple
   /// reference.
@@ -2042,8 +2058,8 @@
   late final _clang_isReference_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isReference>>(
           'clang_isReference');
-  late final _dart_clang_isReference _clang_isReference =
-      _clang_isReference_ptr.asFunction<_dart_clang_isReference>();
+  late final _clang_isReference =
+      _clang_isReference_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents an expression.
   int clang_isExpression(
@@ -2057,8 +2073,8 @@
   late final _clang_isExpression_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isExpression>>(
           'clang_isExpression');
-  late final _dart_clang_isExpression _clang_isExpression =
-      _clang_isExpression_ptr.asFunction<_dart_clang_isExpression>();
+  late final _clang_isExpression =
+      _clang_isExpression_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents a statement.
   int clang_isStatement(
@@ -2072,8 +2088,8 @@
   late final _clang_isStatement_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isStatement>>(
           'clang_isStatement');
-  late final _dart_clang_isStatement _clang_isStatement =
-      _clang_isStatement_ptr.asFunction<_dart_clang_isStatement>();
+  late final _clang_isStatement =
+      _clang_isStatement_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents an attribute.
   int clang_isAttribute(
@@ -2087,8 +2103,8 @@
   late final _clang_isAttribute_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isAttribute>>(
           'clang_isAttribute');
-  late final _dart_clang_isAttribute _clang_isAttribute =
-      _clang_isAttribute_ptr.asFunction<_dart_clang_isAttribute>();
+  late final _clang_isAttribute =
+      _clang_isAttribute_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor has any attributes.
   int clang_Cursor_hasAttrs(
@@ -2102,8 +2118,8 @@
   late final _clang_Cursor_hasAttrs_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_hasAttrs>>(
           'clang_Cursor_hasAttrs');
-  late final _dart_clang_Cursor_hasAttrs _clang_Cursor_hasAttrs =
-      _clang_Cursor_hasAttrs_ptr.asFunction<_dart_clang_Cursor_hasAttrs>();
+  late final _clang_Cursor_hasAttrs =
+      _clang_Cursor_hasAttrs_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor kind represents an invalid
   /// cursor.
@@ -2117,8 +2133,8 @@
 
   late final _clang_isInvalid_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isInvalid>>('clang_isInvalid');
-  late final _dart_clang_isInvalid _clang_isInvalid =
-      _clang_isInvalid_ptr.asFunction<_dart_clang_isInvalid>();
+  late final _clang_isInvalid =
+      _clang_isInvalid_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents a translation
   /// unit.
@@ -2133,8 +2149,8 @@
   late final _clang_isTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isTranslationUnit>>(
           'clang_isTranslationUnit');
-  late final _dart_clang_isTranslationUnit _clang_isTranslationUnit =
-      _clang_isTranslationUnit_ptr.asFunction<_dart_clang_isTranslationUnit>();
+  late final _clang_isTranslationUnit =
+      _clang_isTranslationUnit_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor represents a preprocessing
   /// element, such as a preprocessor directive or macro instantiation.
@@ -2149,8 +2165,8 @@
   late final _clang_isPreprocessing_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isPreprocessing>>(
           'clang_isPreprocessing');
-  late final _dart_clang_isPreprocessing _clang_isPreprocessing =
-      _clang_isPreprocessing_ptr.asFunction<_dart_clang_isPreprocessing>();
+  late final _clang_isPreprocessing =
+      _clang_isPreprocessing_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor represents a currently
   /// unexposed piece of the AST (e.g., CXCursor_UnexposedStmt).
@@ -2165,8 +2181,8 @@
   late final _clang_isUnexposed_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isUnexposed>>(
           'clang_isUnexposed');
-  late final _dart_clang_isUnexposed _clang_isUnexposed =
-      _clang_isUnexposed_ptr.asFunction<_dart_clang_isUnexposed>();
+  late final _clang_isUnexposed =
+      _clang_isUnexposed_ptr.asFunction<int Function(int)>();
 
   /// Determine the linkage of the entity referred to by a given cursor.
   int clang_getCursorLinkage(
@@ -2180,8 +2196,8 @@
   late final _clang_getCursorLinkage_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorLinkage>>(
           'clang_getCursorLinkage');
-  late final _dart_clang_getCursorLinkage _clang_getCursorLinkage =
-      _clang_getCursorLinkage_ptr.asFunction<_dart_clang_getCursorLinkage>();
+  late final _clang_getCursorLinkage =
+      _clang_getCursorLinkage_ptr.asFunction<int Function(CXCursor)>();
 
   /// Describe the visibility of the entity referred to by a cursor.
   ///
@@ -2203,9 +2219,8 @@
   late final _clang_getCursorVisibility_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorVisibility>>(
           'clang_getCursorVisibility');
-  late final _dart_clang_getCursorVisibility _clang_getCursorVisibility =
-      _clang_getCursorVisibility_ptr
-          .asFunction<_dart_clang_getCursorVisibility>();
+  late final _clang_getCursorVisibility =
+      _clang_getCursorVisibility_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the availability of the entity that this cursor refers to,
   /// taking the current target platform into account.
@@ -2224,9 +2239,8 @@
   late final _clang_getCursorAvailability_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorAvailability>>(
           'clang_getCursorAvailability');
-  late final _dart_clang_getCursorAvailability _clang_getCursorAvailability =
-      _clang_getCursorAvailability_ptr
-          .asFunction<_dart_clang_getCursorAvailability>();
+  late final _clang_getCursorAvailability =
+      _clang_getCursorAvailability_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the availability of the entity that this cursor refers to
   /// on any platforms for which availability information is known.
@@ -2285,10 +2299,16 @@
   late final _clang_getCursorPlatformAvailability_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorPlatformAvailability>>(
           'clang_getCursorPlatformAvailability');
-  late final _dart_clang_getCursorPlatformAvailability
-      _clang_getCursorPlatformAvailability =
-      _clang_getCursorPlatformAvailability_ptr
-          .asFunction<_dart_clang_getCursorPlatformAvailability>();
+  late final _clang_getCursorPlatformAvailability =
+      _clang_getCursorPlatformAvailability_ptr.asFunction<
+          int Function(
+              CXCursor,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<CXPlatformAvailability>,
+              int)>();
 
   /// Free the memory associated with a \c CXPlatformAvailability structure.
   void clang_disposeCXPlatformAvailability(
@@ -2302,10 +2322,9 @@
   late final _clang_disposeCXPlatformAvailability_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeCXPlatformAvailability>>(
           'clang_disposeCXPlatformAvailability');
-  late final _dart_clang_disposeCXPlatformAvailability
-      _clang_disposeCXPlatformAvailability =
+  late final _clang_disposeCXPlatformAvailability =
       _clang_disposeCXPlatformAvailability_ptr
-          .asFunction<_dart_clang_disposeCXPlatformAvailability>();
+          .asFunction<void Function(ffi.Pointer<CXPlatformAvailability>)>();
 
   /// Determine the "language" of the entity referred to by a given cursor.
   int clang_getCursorLanguage(
@@ -2319,8 +2338,8 @@
   late final _clang_getCursorLanguage_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorLanguage>>(
           'clang_getCursorLanguage');
-  late final _dart_clang_getCursorLanguage _clang_getCursorLanguage =
-      _clang_getCursorLanguage_ptr.asFunction<_dart_clang_getCursorLanguage>();
+  late final _clang_getCursorLanguage =
+      _clang_getCursorLanguage_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the "thread-local storage (TLS) kind" of the declaration
   /// referred to by a cursor.
@@ -2335,11 +2354,11 @@
   late final _clang_getCursorTLSKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorTLSKind>>(
           'clang_getCursorTLSKind');
-  late final _dart_clang_getCursorTLSKind _clang_getCursorTLSKind =
-      _clang_getCursorTLSKind_ptr.asFunction<_dart_clang_getCursorTLSKind>();
+  late final _clang_getCursorTLSKind =
+      _clang_getCursorTLSKind_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the translation unit that a cursor originated from.
-  ffi.Pointer<CXTranslationUnitImpl> clang_Cursor_getTranslationUnit(
+  CXTranslationUnit clang_Cursor_getTranslationUnit(
     CXCursor arg0,
   ) {
     return _clang_Cursor_getTranslationUnit(
@@ -2350,24 +2369,24 @@
   late final _clang_Cursor_getTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getTranslationUnit>>(
           'clang_Cursor_getTranslationUnit');
-  late final _dart_clang_Cursor_getTranslationUnit
-      _clang_Cursor_getTranslationUnit = _clang_Cursor_getTranslationUnit_ptr
-          .asFunction<_dart_clang_Cursor_getTranslationUnit>();
+  late final _clang_Cursor_getTranslationUnit =
+      _clang_Cursor_getTranslationUnit_ptr
+          .asFunction<CXTranslationUnit Function(CXCursor)>();
 
   /// Creates an empty CXCursorSet.
-  ffi.Pointer<CXCursorSetImpl> clang_createCXCursorSet() {
+  CXCursorSet clang_createCXCursorSet() {
     return _clang_createCXCursorSet();
   }
 
   late final _clang_createCXCursorSet_ptr =
       _lookup<ffi.NativeFunction<Native_clang_createCXCursorSet>>(
           'clang_createCXCursorSet');
-  late final _dart_clang_createCXCursorSet _clang_createCXCursorSet =
-      _clang_createCXCursorSet_ptr.asFunction<_dart_clang_createCXCursorSet>();
+  late final _clang_createCXCursorSet =
+      _clang_createCXCursorSet_ptr.asFunction<CXCursorSet Function()>();
 
   /// Disposes a CXCursorSet and releases its associated memory.
   void clang_disposeCXCursorSet(
-    ffi.Pointer<CXCursorSetImpl> cset,
+    CXCursorSet cset,
   ) {
     return _clang_disposeCXCursorSet(
       cset,
@@ -2377,15 +2396,14 @@
   late final _clang_disposeCXCursorSet_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeCXCursorSet>>(
           'clang_disposeCXCursorSet');
-  late final _dart_clang_disposeCXCursorSet _clang_disposeCXCursorSet =
-      _clang_disposeCXCursorSet_ptr
-          .asFunction<_dart_clang_disposeCXCursorSet>();
+  late final _clang_disposeCXCursorSet =
+      _clang_disposeCXCursorSet_ptr.asFunction<void Function(CXCursorSet)>();
 
   /// Queries a CXCursorSet to see if it contains a specific CXCursor.
   ///
   /// \returns non-zero if the set contains the specified cursor.
   int clang_CXCursorSet_contains(
-    ffi.Pointer<CXCursorSetImpl> cset,
+    CXCursorSet cset,
     CXCursor cursor,
   ) {
     return _clang_CXCursorSet_contains(
@@ -2397,15 +2415,14 @@
   late final _clang_CXCursorSet_contains_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXCursorSet_contains>>(
           'clang_CXCursorSet_contains');
-  late final _dart_clang_CXCursorSet_contains _clang_CXCursorSet_contains =
-      _clang_CXCursorSet_contains_ptr
-          .asFunction<_dart_clang_CXCursorSet_contains>();
+  late final _clang_CXCursorSet_contains = _clang_CXCursorSet_contains_ptr
+      .asFunction<int Function(CXCursorSet, CXCursor)>();
 
   /// Inserts a CXCursor into a CXCursorSet.
   ///
   /// \returns zero if the CXCursor was already in the set, and non-zero otherwise.
   int clang_CXCursorSet_insert(
-    ffi.Pointer<CXCursorSetImpl> cset,
+    CXCursorSet cset,
     CXCursor cursor,
   ) {
     return _clang_CXCursorSet_insert(
@@ -2417,9 +2434,8 @@
   late final _clang_CXCursorSet_insert_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXCursorSet_insert>>(
           'clang_CXCursorSet_insert');
-  late final _dart_clang_CXCursorSet_insert _clang_CXCursorSet_insert =
-      _clang_CXCursorSet_insert_ptr
-          .asFunction<_dart_clang_CXCursorSet_insert>();
+  late final _clang_CXCursorSet_insert = _clang_CXCursorSet_insert_ptr
+      .asFunction<int Function(CXCursorSet, CXCursor)>();
 
   /// Determine the semantic parent of the given cursor.
   ///
@@ -2463,9 +2479,8 @@
   late final _clang_getCursorSemanticParent_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorSemanticParent>>(
           'clang_getCursorSemanticParent');
-  late final _dart_clang_getCursorSemanticParent
-      _clang_getCursorSemanticParent = _clang_getCursorSemanticParent_ptr
-          .asFunction<_dart_clang_getCursorSemanticParent>();
+  late final _clang_getCursorSemanticParent = _clang_getCursorSemanticParent_ptr
+      .asFunction<CXCursor Function(CXCursor)>();
 
   /// Determine the lexical parent of the given cursor.
   ///
@@ -2510,9 +2525,8 @@
   late final _clang_getCursorLexicalParent_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorLexicalParent>>(
           'clang_getCursorLexicalParent');
-  late final _dart_clang_getCursorLexicalParent _clang_getCursorLexicalParent =
-      _clang_getCursorLexicalParent_ptr
-          .asFunction<_dart_clang_getCursorLexicalParent>();
+  late final _clang_getCursorLexicalParent = _clang_getCursorLexicalParent_ptr
+      .asFunction<CXCursor Function(CXCursor)>();
 
   /// Determine the set of methods that are overridden by the given
   /// method.
@@ -2570,9 +2584,10 @@
   late final _clang_getOverriddenCursors_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getOverriddenCursors>>(
           'clang_getOverriddenCursors');
-  late final _dart_clang_getOverriddenCursors _clang_getOverriddenCursors =
-      _clang_getOverriddenCursors_ptr
-          .asFunction<_dart_clang_getOverriddenCursors>();
+  late final _clang_getOverriddenCursors =
+      _clang_getOverriddenCursors_ptr.asFunction<
+          void Function(CXCursor, ffi.Pointer<ffi.Pointer<CXCursor>>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Free the set of overridden cursors returned by \c
   /// clang_getOverriddenCursors().
@@ -2587,13 +2602,13 @@
   late final _clang_disposeOverriddenCursors_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeOverriddenCursors>>(
           'clang_disposeOverriddenCursors');
-  late final _dart_clang_disposeOverriddenCursors
-      _clang_disposeOverriddenCursors = _clang_disposeOverriddenCursors_ptr
-          .asFunction<_dart_clang_disposeOverriddenCursors>();
+  late final _clang_disposeOverriddenCursors =
+      _clang_disposeOverriddenCursors_ptr
+          .asFunction<void Function(ffi.Pointer<CXCursor>)>();
 
   /// Retrieve the file that is included by the given inclusion directive
   /// cursor.
-  ffi.Pointer<ffi.Void> clang_getIncludedFile(
+  CXFile clang_getIncludedFile(
     CXCursor cursor,
   ) {
     return _clang_getIncludedFile(
@@ -2604,8 +2619,8 @@
   late final _clang_getIncludedFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getIncludedFile>>(
           'clang_getIncludedFile');
-  late final _dart_clang_getIncludedFile _clang_getIncludedFile =
-      _clang_getIncludedFile_ptr.asFunction<_dart_clang_getIncludedFile>();
+  late final _clang_getIncludedFile =
+      _clang_getIncludedFile_ptr.asFunction<CXFile Function(CXCursor)>();
 
   /// Map a source location to the cursor that describes the entity at that
   /// location in the source code.
@@ -2621,7 +2636,7 @@
   /// \returns a cursor representing the entity at the given source location, or
   /// a NULL cursor if no such entity can be found.
   CXCursor clang_getCursor(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXSourceLocation arg1,
   ) {
     return _clang_getCursor(
@@ -2632,8 +2647,8 @@
 
   late final _clang_getCursor_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursor>>('clang_getCursor');
-  late final _dart_clang_getCursor _clang_getCursor =
-      _clang_getCursor_ptr.asFunction<_dart_clang_getCursor>();
+  late final _clang_getCursor = _clang_getCursor_ptr
+      .asFunction<CXCursor Function(CXTranslationUnit, CXSourceLocation)>();
 
   /// Retrieve the physical location of the source constructor referenced
   /// by the given cursor.
@@ -2654,8 +2669,8 @@
   late final _clang_getCursorLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorLocation>>(
           'clang_getCursorLocation');
-  late final _dart_clang_getCursorLocation _clang_getCursorLocation =
-      _clang_getCursorLocation_ptr.asFunction<_dart_clang_getCursorLocation>();
+  late final _clang_getCursorLocation = _clang_getCursorLocation_ptr
+      .asFunction<CXSourceLocation Function(CXCursor)>();
 
   /// Retrieve the physical extent of the source construct referenced by
   /// the given cursor.
@@ -2677,8 +2692,8 @@
   late final _clang_getCursorExtent_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorExtent>>(
           'clang_getCursorExtent');
-  late final _dart_clang_getCursorExtent _clang_getCursorExtent =
-      _clang_getCursorExtent_ptr.asFunction<_dart_clang_getCursorExtent>();
+  late final _clang_getCursorExtent =
+      _clang_getCursorExtent_ptr.asFunction<CXSourceRange Function(CXCursor)>();
 
   /// Retrieve the type of a CXCursor (if any).
   CXType clang_getCursorType(
@@ -2692,8 +2707,8 @@
   late final _clang_getCursorType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorType>>(
           'clang_getCursorType');
-  late final _dart_clang_getCursorType _clang_getCursorType =
-      _clang_getCursorType_ptr.asFunction<_dart_clang_getCursorType>();
+  late final _clang_getCursorType =
+      _clang_getCursorType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Pretty-print the underlying type using the rules of the
   /// language of the translation unit from which it came.
@@ -2710,8 +2725,8 @@
   late final _clang_getTypeSpelling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTypeSpelling>>(
           'clang_getTypeSpelling');
-  late final _dart_clang_getTypeSpelling _clang_getTypeSpelling =
-      _clang_getTypeSpelling_ptr.asFunction<_dart_clang_getTypeSpelling>();
+  late final _clang_getTypeSpelling =
+      _clang_getTypeSpelling_ptr.asFunction<CXString Function(CXType)>();
 
   /// Retrieve the underlying type of a typedef declaration.
   ///
@@ -2728,10 +2743,9 @@
   late final _clang_getTypedefDeclUnderlyingType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTypedefDeclUnderlyingType>>(
           'clang_getTypedefDeclUnderlyingType');
-  late final _dart_clang_getTypedefDeclUnderlyingType
-      _clang_getTypedefDeclUnderlyingType =
+  late final _clang_getTypedefDeclUnderlyingType =
       _clang_getTypedefDeclUnderlyingType_ptr
-          .asFunction<_dart_clang_getTypedefDeclUnderlyingType>();
+          .asFunction<CXType Function(CXCursor)>();
 
   /// Retrieve the integer type of an enum declaration.
   ///
@@ -2748,9 +2762,8 @@
   late final _clang_getEnumDeclIntegerType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getEnumDeclIntegerType>>(
           'clang_getEnumDeclIntegerType');
-  late final _dart_clang_getEnumDeclIntegerType _clang_getEnumDeclIntegerType =
-      _clang_getEnumDeclIntegerType_ptr
-          .asFunction<_dart_clang_getEnumDeclIntegerType>();
+  late final _clang_getEnumDeclIntegerType =
+      _clang_getEnumDeclIntegerType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Retrieve the integer value of an enum constant declaration as a signed
   /// long long.
@@ -2769,9 +2782,8 @@
   late final _clang_getEnumConstantDeclValue_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getEnumConstantDeclValue>>(
           'clang_getEnumConstantDeclValue');
-  late final _dart_clang_getEnumConstantDeclValue
-      _clang_getEnumConstantDeclValue = _clang_getEnumConstantDeclValue_ptr
-          .asFunction<_dart_clang_getEnumConstantDeclValue>();
+  late final _clang_getEnumConstantDeclValue =
+      _clang_getEnumConstantDeclValue_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the integer value of an enum constant declaration as an unsigned
   /// long long.
@@ -2790,10 +2802,9 @@
   late final _clang_getEnumConstantDeclUnsignedValue_ptr = _lookup<
           ffi.NativeFunction<Native_clang_getEnumConstantDeclUnsignedValue>>(
       'clang_getEnumConstantDeclUnsignedValue');
-  late final _dart_clang_getEnumConstantDeclUnsignedValue
-      _clang_getEnumConstantDeclUnsignedValue =
+  late final _clang_getEnumConstantDeclUnsignedValue =
       _clang_getEnumConstantDeclUnsignedValue_ptr
-          .asFunction<_dart_clang_getEnumConstantDeclUnsignedValue>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Retrieve the bit width of a bit field declaration as an integer.
   ///
@@ -2809,9 +2820,8 @@
   late final _clang_getFieldDeclBitWidth_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFieldDeclBitWidth>>(
           'clang_getFieldDeclBitWidth');
-  late final _dart_clang_getFieldDeclBitWidth _clang_getFieldDeclBitWidth =
-      _clang_getFieldDeclBitWidth_ptr
-          .asFunction<_dart_clang_getFieldDeclBitWidth>();
+  late final _clang_getFieldDeclBitWidth =
+      _clang_getFieldDeclBitWidth_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the number of non-variadic arguments associated with a given
   /// cursor.
@@ -2829,9 +2839,8 @@
   late final _clang_Cursor_getNumArguments_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getNumArguments>>(
           'clang_Cursor_getNumArguments');
-  late final _dart_clang_Cursor_getNumArguments _clang_Cursor_getNumArguments =
-      _clang_Cursor_getNumArguments_ptr
-          .asFunction<_dart_clang_Cursor_getNumArguments>();
+  late final _clang_Cursor_getNumArguments =
+      _clang_Cursor_getNumArguments_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the argument cursor of a function or method.
   ///
@@ -2851,9 +2860,8 @@
   late final _clang_Cursor_getArgument_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getArgument>>(
           'clang_Cursor_getArgument');
-  late final _dart_clang_Cursor_getArgument _clang_Cursor_getArgument =
-      _clang_Cursor_getArgument_ptr
-          .asFunction<_dart_clang_Cursor_getArgument>();
+  late final _clang_Cursor_getArgument = _clang_Cursor_getArgument_ptr
+      .asFunction<CXCursor Function(CXCursor, int)>();
 
   /// Returns the number of template args of a function decl representing a
   /// template specialization.
@@ -2880,10 +2888,9 @@
   late final _clang_Cursor_getNumTemplateArguments_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getNumTemplateArguments>>(
           'clang_Cursor_getNumTemplateArguments');
-  late final _dart_clang_Cursor_getNumTemplateArguments
-      _clang_Cursor_getNumTemplateArguments =
+  late final _clang_Cursor_getNumTemplateArguments =
       _clang_Cursor_getNumTemplateArguments_ptr
-          .asFunction<_dart_clang_Cursor_getNumTemplateArguments>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Retrieve the kind of the I'th template argument of the CXCursor C.
   ///
@@ -2912,10 +2919,9 @@
   late final _clang_Cursor_getTemplateArgumentKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getTemplateArgumentKind>>(
           'clang_Cursor_getTemplateArgumentKind');
-  late final _dart_clang_Cursor_getTemplateArgumentKind
-      _clang_Cursor_getTemplateArgumentKind =
+  late final _clang_Cursor_getTemplateArgumentKind =
       _clang_Cursor_getTemplateArgumentKind_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentKind>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Retrieve a CXType representing the type of a TemplateArgument of a
   /// function decl representing a template specialization.
@@ -2946,10 +2952,9 @@
   late final _clang_Cursor_getTemplateArgumentType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getTemplateArgumentType>>(
           'clang_Cursor_getTemplateArgumentType');
-  late final _dart_clang_Cursor_getTemplateArgumentType
-      _clang_Cursor_getTemplateArgumentType =
+  late final _clang_Cursor_getTemplateArgumentType =
       _clang_Cursor_getTemplateArgumentType_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentType>();
+          .asFunction<CXType Function(CXCursor, int)>();
 
   /// Retrieve the value of an Integral TemplateArgument (of a function
   /// decl representing a template specialization) as a signed long long.
@@ -2979,10 +2984,9 @@
   late final _clang_Cursor_getTemplateArgumentValue_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getTemplateArgumentValue>>(
           'clang_Cursor_getTemplateArgumentValue');
-  late final _dart_clang_Cursor_getTemplateArgumentValue
-      _clang_Cursor_getTemplateArgumentValue =
+  late final _clang_Cursor_getTemplateArgumentValue =
       _clang_Cursor_getTemplateArgumentValue_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentValue>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Retrieve the value of an Integral TemplateArgument (of a function
   /// decl representing a template specialization) as an unsigned long long.
@@ -3013,10 +3017,9 @@
           ffi.NativeFunction<
               Native_clang_Cursor_getTemplateArgumentUnsignedValue>>(
       'clang_Cursor_getTemplateArgumentUnsignedValue');
-  late final _dart_clang_Cursor_getTemplateArgumentUnsignedValue
-      _clang_Cursor_getTemplateArgumentUnsignedValue =
+  late final _clang_Cursor_getTemplateArgumentUnsignedValue =
       _clang_Cursor_getTemplateArgumentUnsignedValue_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentUnsignedValue>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Determine whether two CXTypes represent the same type.
   ///
@@ -3034,8 +3037,8 @@
 
   late final _clang_equalTypes_ptr =
       _lookup<ffi.NativeFunction<Native_clang_equalTypes>>('clang_equalTypes');
-  late final _dart_clang_equalTypes _clang_equalTypes =
-      _clang_equalTypes_ptr.asFunction<_dart_clang_equalTypes>();
+  late final _clang_equalTypes =
+      _clang_equalTypes_ptr.asFunction<int Function(CXType, CXType)>();
 
   /// Return the canonical type for a CXType.
   ///
@@ -3054,8 +3057,8 @@
   late final _clang_getCanonicalType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCanonicalType>>(
           'clang_getCanonicalType');
-  late final _dart_clang_getCanonicalType _clang_getCanonicalType =
-      _clang_getCanonicalType_ptr.asFunction<_dart_clang_getCanonicalType>();
+  late final _clang_getCanonicalType =
+      _clang_getCanonicalType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Determine whether a CXType has the "const" qualifier set,
   /// without looking through typedefs that may have added "const" at a
@@ -3071,9 +3074,8 @@
   late final _clang_isConstQualifiedType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isConstQualifiedType>>(
           'clang_isConstQualifiedType');
-  late final _dart_clang_isConstQualifiedType _clang_isConstQualifiedType =
-      _clang_isConstQualifiedType_ptr
-          .asFunction<_dart_clang_isConstQualifiedType>();
+  late final _clang_isConstQualifiedType =
+      _clang_isConstQualifiedType_ptr.asFunction<int Function(CXType)>();
 
   /// Determine whether a  CXCursor that is a macro, is
   /// function like.
@@ -3088,9 +3090,9 @@
   late final _clang_Cursor_isMacroFunctionLike_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isMacroFunctionLike>>(
           'clang_Cursor_isMacroFunctionLike');
-  late final _dart_clang_Cursor_isMacroFunctionLike
-      _clang_Cursor_isMacroFunctionLike = _clang_Cursor_isMacroFunctionLike_ptr
-          .asFunction<_dart_clang_Cursor_isMacroFunctionLike>();
+  late final _clang_Cursor_isMacroFunctionLike =
+      _clang_Cursor_isMacroFunctionLike_ptr
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine whether a  CXCursor that is a macro, is a
   /// builtin one.
@@ -3105,9 +3107,8 @@
   late final _clang_Cursor_isMacroBuiltin_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isMacroBuiltin>>(
           'clang_Cursor_isMacroBuiltin');
-  late final _dart_clang_Cursor_isMacroBuiltin _clang_Cursor_isMacroBuiltin =
-      _clang_Cursor_isMacroBuiltin_ptr
-          .asFunction<_dart_clang_Cursor_isMacroBuiltin>();
+  late final _clang_Cursor_isMacroBuiltin =
+      _clang_Cursor_isMacroBuiltin_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether a  CXCursor that is a function declaration, is an
   /// inline declaration.
@@ -3122,9 +3123,8 @@
   late final _clang_Cursor_isFunctionInlined_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isFunctionInlined>>(
           'clang_Cursor_isFunctionInlined');
-  late final _dart_clang_Cursor_isFunctionInlined
-      _clang_Cursor_isFunctionInlined = _clang_Cursor_isFunctionInlined_ptr
-          .asFunction<_dart_clang_Cursor_isFunctionInlined>();
+  late final _clang_Cursor_isFunctionInlined =
+      _clang_Cursor_isFunctionInlined_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether a CXType has the "volatile" qualifier set,
   /// without looking through typedefs that may have added "volatile" at
@@ -3140,9 +3140,8 @@
   late final _clang_isVolatileQualifiedType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isVolatileQualifiedType>>(
           'clang_isVolatileQualifiedType');
-  late final _dart_clang_isVolatileQualifiedType
-      _clang_isVolatileQualifiedType = _clang_isVolatileQualifiedType_ptr
-          .asFunction<_dart_clang_isVolatileQualifiedType>();
+  late final _clang_isVolatileQualifiedType =
+      _clang_isVolatileQualifiedType_ptr.asFunction<int Function(CXType)>();
 
   /// Determine whether a CXType has the "restrict" qualifier set,
   /// without looking through typedefs that may have added "restrict" at a
@@ -3158,9 +3157,8 @@
   late final _clang_isRestrictQualifiedType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isRestrictQualifiedType>>(
           'clang_isRestrictQualifiedType');
-  late final _dart_clang_isRestrictQualifiedType
-      _clang_isRestrictQualifiedType = _clang_isRestrictQualifiedType_ptr
-          .asFunction<_dart_clang_isRestrictQualifiedType>();
+  late final _clang_isRestrictQualifiedType =
+      _clang_isRestrictQualifiedType_ptr.asFunction<int Function(CXType)>();
 
   /// Returns the address space of the given type.
   int clang_getAddressSpace(
@@ -3174,8 +3172,8 @@
   late final _clang_getAddressSpace_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getAddressSpace>>(
           'clang_getAddressSpace');
-  late final _dart_clang_getAddressSpace _clang_getAddressSpace =
-      _clang_getAddressSpace_ptr.asFunction<_dart_clang_getAddressSpace>();
+  late final _clang_getAddressSpace =
+      _clang_getAddressSpace_ptr.asFunction<int Function(CXType)>();
 
   /// Returns the typedef name of the given type.
   CXString clang_getTypedefName(
@@ -3189,8 +3187,8 @@
   late final _clang_getTypedefName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTypedefName>>(
           'clang_getTypedefName');
-  late final _dart_clang_getTypedefName _clang_getTypedefName =
-      _clang_getTypedefName_ptr.asFunction<_dart_clang_getTypedefName>();
+  late final _clang_getTypedefName =
+      _clang_getTypedefName_ptr.asFunction<CXString Function(CXType)>();
 
   /// For pointer types, returns the type of the pointee.
   CXType clang_getPointeeType(
@@ -3204,8 +3202,8 @@
   late final _clang_getPointeeType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getPointeeType>>(
           'clang_getPointeeType');
-  late final _dart_clang_getPointeeType _clang_getPointeeType =
-      _clang_getPointeeType_ptr.asFunction<_dart_clang_getPointeeType>();
+  late final _clang_getPointeeType =
+      _clang_getPointeeType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the cursor for the declaration of the given type.
   CXCursor clang_getTypeDeclaration(
@@ -3219,9 +3217,8 @@
   late final _clang_getTypeDeclaration_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTypeDeclaration>>(
           'clang_getTypeDeclaration');
-  late final _dart_clang_getTypeDeclaration _clang_getTypeDeclaration =
-      _clang_getTypeDeclaration_ptr
-          .asFunction<_dart_clang_getTypeDeclaration>();
+  late final _clang_getTypeDeclaration =
+      _clang_getTypeDeclaration_ptr.asFunction<CXCursor Function(CXType)>();
 
   /// Returns the Objective-C type encoding for the specified declaration.
   CXString clang_getDeclObjCTypeEncoding(
@@ -3235,9 +3232,8 @@
   late final _clang_getDeclObjCTypeEncoding_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDeclObjCTypeEncoding>>(
           'clang_getDeclObjCTypeEncoding');
-  late final _dart_clang_getDeclObjCTypeEncoding
-      _clang_getDeclObjCTypeEncoding = _clang_getDeclObjCTypeEncoding_ptr
-          .asFunction<_dart_clang_getDeclObjCTypeEncoding>();
+  late final _clang_getDeclObjCTypeEncoding = _clang_getDeclObjCTypeEncoding_ptr
+      .asFunction<CXString Function(CXCursor)>();
 
   /// Returns the Objective-C type encoding for the specified CXType.
   CXString clang_Type_getObjCEncoding(
@@ -3251,9 +3247,8 @@
   late final _clang_Type_getObjCEncoding_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getObjCEncoding>>(
           'clang_Type_getObjCEncoding');
-  late final _dart_clang_Type_getObjCEncoding _clang_Type_getObjCEncoding =
-      _clang_Type_getObjCEncoding_ptr
-          .asFunction<_dart_clang_Type_getObjCEncoding>();
+  late final _clang_Type_getObjCEncoding =
+      _clang_Type_getObjCEncoding_ptr.asFunction<CXString Function(CXType)>();
 
   /// Retrieve the spelling of a given CXTypeKind.
   CXString clang_getTypeKindSpelling(
@@ -3267,9 +3262,8 @@
   late final _clang_getTypeKindSpelling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTypeKindSpelling>>(
           'clang_getTypeKindSpelling');
-  late final _dart_clang_getTypeKindSpelling _clang_getTypeKindSpelling =
-      _clang_getTypeKindSpelling_ptr
-          .asFunction<_dart_clang_getTypeKindSpelling>();
+  late final _clang_getTypeKindSpelling =
+      _clang_getTypeKindSpelling_ptr.asFunction<CXString Function(int)>();
 
   /// Retrieve the calling convention associated with a function type.
   ///
@@ -3285,9 +3279,8 @@
   late final _clang_getFunctionTypeCallingConv_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getFunctionTypeCallingConv>>(
           'clang_getFunctionTypeCallingConv');
-  late final _dart_clang_getFunctionTypeCallingConv
-      _clang_getFunctionTypeCallingConv = _clang_getFunctionTypeCallingConv_ptr
-          .asFunction<_dart_clang_getFunctionTypeCallingConv>();
+  late final _clang_getFunctionTypeCallingConv =
+      _clang_getFunctionTypeCallingConv_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the return type associated with a function type.
   ///
@@ -3303,8 +3296,8 @@
   late final _clang_getResultType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getResultType>>(
           'clang_getResultType');
-  late final _dart_clang_getResultType _clang_getResultType =
-      _clang_getResultType_ptr.asFunction<_dart_clang_getResultType>();
+  late final _clang_getResultType =
+      _clang_getResultType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Retrieve the exception specification type associated with a function type.
   /// This is a value of type CXCursor_ExceptionSpecificationKind.
@@ -3321,10 +3314,9 @@
   late final _clang_getExceptionSpecificationType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getExceptionSpecificationType>>(
           'clang_getExceptionSpecificationType');
-  late final _dart_clang_getExceptionSpecificationType
-      _clang_getExceptionSpecificationType =
+  late final _clang_getExceptionSpecificationType =
       _clang_getExceptionSpecificationType_ptr
-          .asFunction<_dart_clang_getExceptionSpecificationType>();
+          .asFunction<int Function(CXType)>();
 
   /// Retrieve the number of non-variadic parameters associated with a
   /// function type.
@@ -3341,8 +3333,8 @@
   late final _clang_getNumArgTypes_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNumArgTypes>>(
           'clang_getNumArgTypes');
-  late final _dart_clang_getNumArgTypes _clang_getNumArgTypes =
-      _clang_getNumArgTypes_ptr.asFunction<_dart_clang_getNumArgTypes>();
+  late final _clang_getNumArgTypes =
+      _clang_getNumArgTypes_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the type of a parameter of a function type.
   ///
@@ -3360,8 +3352,8 @@
 
   late final _clang_getArgType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getArgType>>('clang_getArgType');
-  late final _dart_clang_getArgType _clang_getArgType =
-      _clang_getArgType_ptr.asFunction<_dart_clang_getArgType>();
+  late final _clang_getArgType =
+      _clang_getArgType_ptr.asFunction<CXType Function(CXType, int)>();
 
   /// Retrieves the base type of the ObjCObjectType.
   ///
@@ -3377,9 +3369,9 @@
   late final _clang_Type_getObjCObjectBaseType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getObjCObjectBaseType>>(
           'clang_Type_getObjCObjectBaseType');
-  late final _dart_clang_Type_getObjCObjectBaseType
-      _clang_Type_getObjCObjectBaseType = _clang_Type_getObjCObjectBaseType_ptr
-          .asFunction<_dart_clang_Type_getObjCObjectBaseType>();
+  late final _clang_Type_getObjCObjectBaseType =
+      _clang_Type_getObjCObjectBaseType_ptr
+          .asFunction<CXType Function(CXType)>();
 
   /// Retrieve the number of protocol references associated with an ObjC object/id.
   ///
@@ -3395,10 +3387,8 @@
   late final _clang_Type_getNumObjCProtocolRefs_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getNumObjCProtocolRefs>>(
           'clang_Type_getNumObjCProtocolRefs');
-  late final _dart_clang_Type_getNumObjCProtocolRefs
-      _clang_Type_getNumObjCProtocolRefs =
-      _clang_Type_getNumObjCProtocolRefs_ptr
-          .asFunction<_dart_clang_Type_getNumObjCProtocolRefs>();
+  late final _clang_Type_getNumObjCProtocolRefs =
+      _clang_Type_getNumObjCProtocolRefs_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the decl for a protocol reference for an ObjC object/id.
   ///
@@ -3417,9 +3407,9 @@
   late final _clang_Type_getObjCProtocolDecl_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getObjCProtocolDecl>>(
           'clang_Type_getObjCProtocolDecl');
-  late final _dart_clang_Type_getObjCProtocolDecl
-      _clang_Type_getObjCProtocolDecl = _clang_Type_getObjCProtocolDecl_ptr
-          .asFunction<_dart_clang_Type_getObjCProtocolDecl>();
+  late final _clang_Type_getObjCProtocolDecl =
+      _clang_Type_getObjCProtocolDecl_ptr
+          .asFunction<CXCursor Function(CXType, int)>();
 
   /// Retreive the number of type arguments associated with an ObjC object.
   ///
@@ -3435,9 +3425,8 @@
   late final _clang_Type_getNumObjCTypeArgs_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getNumObjCTypeArgs>>(
           'clang_Type_getNumObjCTypeArgs');
-  late final _dart_clang_Type_getNumObjCTypeArgs
-      _clang_Type_getNumObjCTypeArgs = _clang_Type_getNumObjCTypeArgs_ptr
-          .asFunction<_dart_clang_Type_getNumObjCTypeArgs>();
+  late final _clang_Type_getNumObjCTypeArgs =
+      _clang_Type_getNumObjCTypeArgs_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve a type argument associated with an ObjC object.
   ///
@@ -3456,9 +3445,8 @@
   late final _clang_Type_getObjCTypeArg_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getObjCTypeArg>>(
           'clang_Type_getObjCTypeArg');
-  late final _dart_clang_Type_getObjCTypeArg _clang_Type_getObjCTypeArg =
-      _clang_Type_getObjCTypeArg_ptr
-          .asFunction<_dart_clang_Type_getObjCTypeArg>();
+  late final _clang_Type_getObjCTypeArg =
+      _clang_Type_getObjCTypeArg_ptr.asFunction<CXType Function(CXType, int)>();
 
   /// Return 1 if the CXType is a variadic function type, and 0 otherwise.
   int clang_isFunctionTypeVariadic(
@@ -3472,9 +3460,8 @@
   late final _clang_isFunctionTypeVariadic_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isFunctionTypeVariadic>>(
           'clang_isFunctionTypeVariadic');
-  late final _dart_clang_isFunctionTypeVariadic _clang_isFunctionTypeVariadic =
-      _clang_isFunctionTypeVariadic_ptr
-          .asFunction<_dart_clang_isFunctionTypeVariadic>();
+  late final _clang_isFunctionTypeVariadic =
+      _clang_isFunctionTypeVariadic_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the return type associated with a given cursor.
   ///
@@ -3490,9 +3477,8 @@
   late final _clang_getCursorResultType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorResultType>>(
           'clang_getCursorResultType');
-  late final _dart_clang_getCursorResultType _clang_getCursorResultType =
-      _clang_getCursorResultType_ptr
-          .asFunction<_dart_clang_getCursorResultType>();
+  late final _clang_getCursorResultType =
+      _clang_getCursorResultType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Retrieve the exception specification type associated with a given cursor.
   /// This is a value of type CXCursor_ExceptionSpecificationKind.
@@ -3509,10 +3495,9 @@
   late final _clang_getCursorExceptionSpecificationType_ptr = _lookup<
           ffi.NativeFunction<Native_clang_getCursorExceptionSpecificationType>>(
       'clang_getCursorExceptionSpecificationType');
-  late final _dart_clang_getCursorExceptionSpecificationType
-      _clang_getCursorExceptionSpecificationType =
+  late final _clang_getCursorExceptionSpecificationType =
       _clang_getCursorExceptionSpecificationType_ptr
-          .asFunction<_dart_clang_getCursorExceptionSpecificationType>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Return 1 if the CXType is a POD (plain old data) type, and 0
   /// otherwise.
@@ -3526,8 +3511,8 @@
 
   late final _clang_isPODType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isPODType>>('clang_isPODType');
-  late final _dart_clang_isPODType _clang_isPODType =
-      _clang_isPODType_ptr.asFunction<_dart_clang_isPODType>();
+  late final _clang_isPODType =
+      _clang_isPODType_ptr.asFunction<int Function(CXType)>();
 
   /// Return the element type of an array, complex, or vector type.
   ///
@@ -3544,8 +3529,8 @@
   late final _clang_getElementType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getElementType>>(
           'clang_getElementType');
-  late final _dart_clang_getElementType _clang_getElementType =
-      _clang_getElementType_ptr.asFunction<_dart_clang_getElementType>();
+  late final _clang_getElementType =
+      _clang_getElementType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the number of elements of an array or vector type.
   ///
@@ -3562,8 +3547,8 @@
   late final _clang_getNumElements_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNumElements>>(
           'clang_getNumElements');
-  late final _dart_clang_getNumElements _clang_getNumElements =
-      _clang_getNumElements_ptr.asFunction<_dart_clang_getNumElements>();
+  late final _clang_getNumElements =
+      _clang_getNumElements_ptr.asFunction<int Function(CXType)>();
 
   /// Return the element type of an array type.
   ///
@@ -3579,9 +3564,8 @@
   late final _clang_getArrayElementType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getArrayElementType>>(
           'clang_getArrayElementType');
-  late final _dart_clang_getArrayElementType _clang_getArrayElementType =
-      _clang_getArrayElementType_ptr
-          .asFunction<_dart_clang_getArrayElementType>();
+  late final _clang_getArrayElementType =
+      _clang_getArrayElementType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the array size of a constant array.
   ///
@@ -3597,8 +3581,8 @@
   late final _clang_getArraySize_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getArraySize>>(
           'clang_getArraySize');
-  late final _dart_clang_getArraySize _clang_getArraySize =
-      _clang_getArraySize_ptr.asFunction<_dart_clang_getArraySize>();
+  late final _clang_getArraySize =
+      _clang_getArraySize_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the type named by the qualified-id.
   ///
@@ -3614,8 +3598,8 @@
   late final _clang_Type_getNamedType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getNamedType>>(
           'clang_Type_getNamedType');
-  late final _dart_clang_Type_getNamedType _clang_Type_getNamedType =
-      _clang_Type_getNamedType_ptr.asFunction<_dart_clang_Type_getNamedType>();
+  late final _clang_Type_getNamedType =
+      _clang_Type_getNamedType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Determine if a typedef is 'transparent' tag.
   ///
@@ -3634,10 +3618,9 @@
   late final _clang_Type_isTransparentTagTypedef_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_isTransparentTagTypedef>>(
           'clang_Type_isTransparentTagTypedef');
-  late final _dart_clang_Type_isTransparentTagTypedef
-      _clang_Type_isTransparentTagTypedef =
+  late final _clang_Type_isTransparentTagTypedef =
       _clang_Type_isTransparentTagTypedef_ptr
-          .asFunction<_dart_clang_Type_isTransparentTagTypedef>();
+          .asFunction<int Function(CXType)>();
 
   /// Retrieve the nullability kind of a pointer type.
   int clang_Type_getNullability(
@@ -3651,9 +3634,8 @@
   late final _clang_Type_getNullability_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getNullability>>(
           'clang_Type_getNullability');
-  late final _dart_clang_Type_getNullability _clang_Type_getNullability =
-      _clang_Type_getNullability_ptr
-          .asFunction<_dart_clang_Type_getNullability>();
+  late final _clang_Type_getNullability =
+      _clang_Type_getNullability_ptr.asFunction<int Function(CXType)>();
 
   /// Return the alignment of a type in bytes as per C++[expr.alignof]
   /// standard.
@@ -3676,8 +3658,8 @@
   late final _clang_Type_getAlignOf_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getAlignOf>>(
           'clang_Type_getAlignOf');
-  late final _dart_clang_Type_getAlignOf _clang_Type_getAlignOf =
-      _clang_Type_getAlignOf_ptr.asFunction<_dart_clang_Type_getAlignOf>();
+  late final _clang_Type_getAlignOf =
+      _clang_Type_getAlignOf_ptr.asFunction<int Function(CXType)>();
 
   /// Return the class type of an member pointer type.
   ///
@@ -3693,8 +3675,8 @@
   late final _clang_Type_getClassType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getClassType>>(
           'clang_Type_getClassType');
-  late final _dart_clang_Type_getClassType _clang_Type_getClassType =
-      _clang_Type_getClassType_ptr.asFunction<_dart_clang_Type_getClassType>();
+  late final _clang_Type_getClassType =
+      _clang_Type_getClassType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the size of a type in bytes as per C++[expr.sizeof] standard.
   ///
@@ -3714,8 +3696,8 @@
   late final _clang_Type_getSizeOf_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getSizeOf>>(
           'clang_Type_getSizeOf');
-  late final _dart_clang_Type_getSizeOf _clang_Type_getSizeOf =
-      _clang_Type_getSizeOf_ptr.asFunction<_dart_clang_Type_getSizeOf>();
+  late final _clang_Type_getSizeOf =
+      _clang_Type_getSizeOf_ptr.asFunction<int Function(CXType)>();
 
   /// Return the offset of a field named S in a record of type T in bits
   /// as it would be returned by __offsetof__ as per C++11[18.2p4]
@@ -3741,8 +3723,8 @@
   late final _clang_Type_getOffsetOf_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getOffsetOf>>(
           'clang_Type_getOffsetOf');
-  late final _dart_clang_Type_getOffsetOf _clang_Type_getOffsetOf =
-      _clang_Type_getOffsetOf_ptr.asFunction<_dart_clang_Type_getOffsetOf>();
+  late final _clang_Type_getOffsetOf = _clang_Type_getOffsetOf_ptr
+      .asFunction<int Function(CXType, ffi.Pointer<ffi.Int8>)>();
 
   /// Return the type that was modified by this attributed type.
   ///
@@ -3758,9 +3740,8 @@
   late final _clang_Type_getModifiedType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getModifiedType>>(
           'clang_Type_getModifiedType');
-  late final _dart_clang_Type_getModifiedType _clang_Type_getModifiedType =
-      _clang_Type_getModifiedType_ptr
-          .asFunction<_dart_clang_Type_getModifiedType>();
+  late final _clang_Type_getModifiedType =
+      _clang_Type_getModifiedType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the offset of the field represented by the Cursor.
   ///
@@ -3784,9 +3765,8 @@
   late final _clang_Cursor_getOffsetOfField_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getOffsetOfField>>(
           'clang_Cursor_getOffsetOfField');
-  late final _dart_clang_Cursor_getOffsetOfField
-      _clang_Cursor_getOffsetOfField = _clang_Cursor_getOffsetOfField_ptr
-          .asFunction<_dart_clang_Cursor_getOffsetOfField>();
+  late final _clang_Cursor_getOffsetOfField =
+      _clang_Cursor_getOffsetOfField_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor represents an anonymous
   /// tag or namespace
@@ -3801,9 +3781,8 @@
   late final _clang_Cursor_isAnonymous_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isAnonymous>>(
           'clang_Cursor_isAnonymous');
-  late final _dart_clang_Cursor_isAnonymous _clang_Cursor_isAnonymous =
-      _clang_Cursor_isAnonymous_ptr
-          .asFunction<_dart_clang_Cursor_isAnonymous>();
+  late final _clang_Cursor_isAnonymous =
+      _clang_Cursor_isAnonymous_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor represents an anonymous record
   /// declaration.
@@ -3818,10 +3797,9 @@
   late final _clang_Cursor_isAnonymousRecordDecl_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isAnonymousRecordDecl>>(
           'clang_Cursor_isAnonymousRecordDecl');
-  late final _dart_clang_Cursor_isAnonymousRecordDecl
-      _clang_Cursor_isAnonymousRecordDecl =
+  late final _clang_Cursor_isAnonymousRecordDecl =
       _clang_Cursor_isAnonymousRecordDecl_ptr
-          .asFunction<_dart_clang_Cursor_isAnonymousRecordDecl>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor represents an inline namespace
   /// declaration.
@@ -3836,9 +3814,8 @@
   late final _clang_Cursor_isInlineNamespace_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isInlineNamespace>>(
           'clang_Cursor_isInlineNamespace');
-  late final _dart_clang_Cursor_isInlineNamespace
-      _clang_Cursor_isInlineNamespace = _clang_Cursor_isInlineNamespace_ptr
-          .asFunction<_dart_clang_Cursor_isInlineNamespace>();
+  late final _clang_Cursor_isInlineNamespace =
+      _clang_Cursor_isInlineNamespace_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the number of template arguments for given template
   /// specialization, or -1 if type \c T is not a template specialization.
@@ -3853,10 +3830,9 @@
   late final _clang_Type_getNumTemplateArguments_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getNumTemplateArguments>>(
           'clang_Type_getNumTemplateArguments');
-  late final _dart_clang_Type_getNumTemplateArguments
-      _clang_Type_getNumTemplateArguments =
+  late final _clang_Type_getNumTemplateArguments =
       _clang_Type_getNumTemplateArguments_ptr
-          .asFunction<_dart_clang_Type_getNumTemplateArguments>();
+          .asFunction<int Function(CXType)>();
 
   /// Returns the type template argument of a template class specialization
   /// at given index.
@@ -3876,10 +3852,9 @@
   late final _clang_Type_getTemplateArgumentAsType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getTemplateArgumentAsType>>(
           'clang_Type_getTemplateArgumentAsType');
-  late final _dart_clang_Type_getTemplateArgumentAsType
-      _clang_Type_getTemplateArgumentAsType =
+  late final _clang_Type_getTemplateArgumentAsType =
       _clang_Type_getTemplateArgumentAsType_ptr
-          .asFunction<_dart_clang_Type_getTemplateArgumentAsType>();
+          .asFunction<CXType Function(CXType, int)>();
 
   /// Retrieve the ref-qualifier kind of a function or method.
   ///
@@ -3896,9 +3871,8 @@
   late final _clang_Type_getCXXRefQualifier_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_getCXXRefQualifier>>(
           'clang_Type_getCXXRefQualifier');
-  late final _dart_clang_Type_getCXXRefQualifier
-      _clang_Type_getCXXRefQualifier = _clang_Type_getCXXRefQualifier_ptr
-          .asFunction<_dart_clang_Type_getCXXRefQualifier>();
+  late final _clang_Type_getCXXRefQualifier =
+      _clang_Type_getCXXRefQualifier_ptr.asFunction<int Function(CXType)>();
 
   /// Returns non-zero if the cursor specifies a Record member that is a
   /// bitfield.
@@ -3913,8 +3887,8 @@
   late final _clang_Cursor_isBitField_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isBitField>>(
           'clang_Cursor_isBitField');
-  late final _dart_clang_Cursor_isBitField _clang_Cursor_isBitField =
-      _clang_Cursor_isBitField_ptr.asFunction<_dart_clang_Cursor_isBitField>();
+  late final _clang_Cursor_isBitField =
+      _clang_Cursor_isBitField_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns 1 if the base class specified by the cursor with kind
   /// CX_CXXBaseSpecifier is virtual.
@@ -3929,8 +3903,8 @@
   late final _clang_isVirtualBase_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isVirtualBase>>(
           'clang_isVirtualBase');
-  late final _dart_clang_isVirtualBase _clang_isVirtualBase =
-      _clang_isVirtualBase_ptr.asFunction<_dart_clang_isVirtualBase>();
+  late final _clang_isVirtualBase =
+      _clang_isVirtualBase_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the access control level for the referenced object.
   ///
@@ -3948,9 +3922,8 @@
   late final _clang_getCXXAccessSpecifier_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCXXAccessSpecifier>>(
           'clang_getCXXAccessSpecifier');
-  late final _dart_clang_getCXXAccessSpecifier _clang_getCXXAccessSpecifier =
-      _clang_getCXXAccessSpecifier_ptr
-          .asFunction<_dart_clang_getCXXAccessSpecifier>();
+  late final _clang_getCXXAccessSpecifier =
+      _clang_getCXXAccessSpecifier_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the storage class for a function or variable declaration.
   ///
@@ -3967,9 +3940,8 @@
   late final _clang_Cursor_getStorageClass_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getStorageClass>>(
           'clang_Cursor_getStorageClass');
-  late final _dart_clang_Cursor_getStorageClass _clang_Cursor_getStorageClass =
-      _clang_Cursor_getStorageClass_ptr
-          .asFunction<_dart_clang_Cursor_getStorageClass>();
+  late final _clang_Cursor_getStorageClass =
+      _clang_Cursor_getStorageClass_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the number of overloaded declarations referenced by a
   /// \c CXCursor_OverloadedDeclRef cursor.
@@ -3989,9 +3961,8 @@
   late final _clang_getNumOverloadedDecls_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNumOverloadedDecls>>(
           'clang_getNumOverloadedDecls');
-  late final _dart_clang_getNumOverloadedDecls _clang_getNumOverloadedDecls =
-      _clang_getNumOverloadedDecls_ptr
-          .asFunction<_dart_clang_getNumOverloadedDecls>();
+  late final _clang_getNumOverloadedDecls =
+      _clang_getNumOverloadedDecls_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve a cursor for one of the overloaded declarations referenced
   /// by a \c CXCursor_OverloadedDeclRef cursor.
@@ -4018,8 +3989,8 @@
   late final _clang_getOverloadedDecl_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getOverloadedDecl>>(
           'clang_getOverloadedDecl');
-  late final _dart_clang_getOverloadedDecl _clang_getOverloadedDecl =
-      _clang_getOverloadedDecl_ptr.asFunction<_dart_clang_getOverloadedDecl>();
+  late final _clang_getOverloadedDecl = _clang_getOverloadedDecl_ptr
+      .asFunction<CXCursor Function(CXCursor, int)>();
 
   /// For cursors representing an iboutletcollection attribute,
   /// this function returns the collection element type.
@@ -4034,9 +4005,9 @@
   late final _clang_getIBOutletCollectionType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getIBOutletCollectionType>>(
           'clang_getIBOutletCollectionType');
-  late final _dart_clang_getIBOutletCollectionType
-      _clang_getIBOutletCollectionType = _clang_getIBOutletCollectionType_ptr
-          .asFunction<_dart_clang_getIBOutletCollectionType>();
+  late final _clang_getIBOutletCollectionType =
+      _clang_getIBOutletCollectionType_ptr
+          .asFunction<CXType Function(CXCursor)>();
 
   /// Visit the children of a particular cursor.
   ///
@@ -4060,8 +4031,8 @@
   /// prematurely by the visitor returning \c CXChildVisit_Break.
   int clang_visitChildren(
     CXCursor parent,
-    ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-    ffi.Pointer<ffi.Void> client_data,
+    CXCursorVisitor visitor,
+    CXClientData client_data,
   ) {
     return _clang_visitChildren(
       parent,
@@ -4073,8 +4044,8 @@
   late final _clang_visitChildren_ptr =
       _lookup<ffi.NativeFunction<Native_clang_visitChildren>>(
           'clang_visitChildren');
-  late final _dart_clang_visitChildren _clang_visitChildren =
-      _clang_visitChildren_ptr.asFunction<_dart_clang_visitChildren>();
+  late final _clang_visitChildren = _clang_visitChildren_ptr
+      .asFunction<int Function(CXCursor, CXCursorVisitor, CXClientData)>();
 
   /// Retrieve a Unified Symbol Resolution (USR) for the entity referenced
   /// by the given cursor.
@@ -4094,8 +4065,8 @@
   late final _clang_getCursorUSR_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorUSR>>(
           'clang_getCursorUSR');
-  late final _dart_clang_getCursorUSR _clang_getCursorUSR =
-      _clang_getCursorUSR_ptr.asFunction<_dart_clang_getCursorUSR>();
+  late final _clang_getCursorUSR =
+      _clang_getCursorUSR_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// Construct a USR for a specified Objective-C class.
   CXString clang_constructUSR_ObjCClass(
@@ -4109,9 +4080,8 @@
   late final _clang_constructUSR_ObjCClass_ptr =
       _lookup<ffi.NativeFunction<Native_clang_constructUSR_ObjCClass>>(
           'clang_constructUSR_ObjCClass');
-  late final _dart_clang_constructUSR_ObjCClass _clang_constructUSR_ObjCClass =
-      _clang_constructUSR_ObjCClass_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCClass>();
+  late final _clang_constructUSR_ObjCClass = _clang_constructUSR_ObjCClass_ptr
+      .asFunction<CXString Function(ffi.Pointer<ffi.Int8>)>();
 
   /// Construct a USR for a specified Objective-C category.
   CXString clang_constructUSR_ObjCCategory(
@@ -4127,9 +4097,9 @@
   late final _clang_constructUSR_ObjCCategory_ptr =
       _lookup<ffi.NativeFunction<Native_clang_constructUSR_ObjCCategory>>(
           'clang_constructUSR_ObjCCategory');
-  late final _dart_clang_constructUSR_ObjCCategory
-      _clang_constructUSR_ObjCCategory = _clang_constructUSR_ObjCCategory_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCCategory>();
+  late final _clang_constructUSR_ObjCCategory =
+      _clang_constructUSR_ObjCCategory_ptr.asFunction<
+          CXString Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   /// Construct a USR for a specified Objective-C protocol.
   CXString clang_constructUSR_ObjCProtocol(
@@ -4143,9 +4113,9 @@
   late final _clang_constructUSR_ObjCProtocol_ptr =
       _lookup<ffi.NativeFunction<Native_clang_constructUSR_ObjCProtocol>>(
           'clang_constructUSR_ObjCProtocol');
-  late final _dart_clang_constructUSR_ObjCProtocol
-      _clang_constructUSR_ObjCProtocol = _clang_constructUSR_ObjCProtocol_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCProtocol>();
+  late final _clang_constructUSR_ObjCProtocol =
+      _clang_constructUSR_ObjCProtocol_ptr
+          .asFunction<CXString Function(ffi.Pointer<ffi.Int8>)>();
 
   /// Construct a USR for a specified Objective-C instance variable and
   /// the USR for its containing class.
@@ -4162,9 +4132,8 @@
   late final _clang_constructUSR_ObjCIvar_ptr =
       _lookup<ffi.NativeFunction<Native_clang_constructUSR_ObjCIvar>>(
           'clang_constructUSR_ObjCIvar');
-  late final _dart_clang_constructUSR_ObjCIvar _clang_constructUSR_ObjCIvar =
-      _clang_constructUSR_ObjCIvar_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCIvar>();
+  late final _clang_constructUSR_ObjCIvar = _clang_constructUSR_ObjCIvar_ptr
+      .asFunction<CXString Function(ffi.Pointer<ffi.Int8>, CXString)>();
 
   /// Construct a USR for a specified Objective-C method and
   /// the USR for its containing class.
@@ -4183,9 +4152,8 @@
   late final _clang_constructUSR_ObjCMethod_ptr =
       _lookup<ffi.NativeFunction<Native_clang_constructUSR_ObjCMethod>>(
           'clang_constructUSR_ObjCMethod');
-  late final _dart_clang_constructUSR_ObjCMethod
-      _clang_constructUSR_ObjCMethod = _clang_constructUSR_ObjCMethod_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCMethod>();
+  late final _clang_constructUSR_ObjCMethod = _clang_constructUSR_ObjCMethod_ptr
+      .asFunction<CXString Function(ffi.Pointer<ffi.Int8>, int, CXString)>();
 
   /// Construct a USR for a specified Objective-C property and the USR
   /// for its containing class.
@@ -4202,9 +4170,9 @@
   late final _clang_constructUSR_ObjCProperty_ptr =
       _lookup<ffi.NativeFunction<Native_clang_constructUSR_ObjCProperty>>(
           'clang_constructUSR_ObjCProperty');
-  late final _dart_clang_constructUSR_ObjCProperty
-      _clang_constructUSR_ObjCProperty = _clang_constructUSR_ObjCProperty_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCProperty>();
+  late final _clang_constructUSR_ObjCProperty =
+      _clang_constructUSR_ObjCProperty_ptr
+          .asFunction<CXString Function(ffi.Pointer<ffi.Int8>, CXString)>();
 
   /// Retrieve a name for the entity referenced by this cursor.
   CXString clang_getCursorSpelling(
@@ -4218,8 +4186,8 @@
   late final _clang_getCursorSpelling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorSpelling>>(
           'clang_getCursorSpelling');
-  late final _dart_clang_getCursorSpelling _clang_getCursorSpelling =
-      _clang_getCursorSpelling_ptr.asFunction<_dart_clang_getCursorSpelling>();
+  late final _clang_getCursorSpelling =
+      _clang_getCursorSpelling_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// Retrieve a range for a piece that forms the cursors spelling name.
   /// Most of the times there is only one range for the complete spelling but for
@@ -4245,14 +4213,13 @@
   late final _clang_Cursor_getSpellingNameRange_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getSpellingNameRange>>(
           'clang_Cursor_getSpellingNameRange');
-  late final _dart_clang_Cursor_getSpellingNameRange
-      _clang_Cursor_getSpellingNameRange =
+  late final _clang_Cursor_getSpellingNameRange =
       _clang_Cursor_getSpellingNameRange_ptr
-          .asFunction<_dart_clang_Cursor_getSpellingNameRange>();
+          .asFunction<CXSourceRange Function(CXCursor, int, int)>();
 
   /// Get a property value for the given printing policy.
   int clang_PrintingPolicy_getProperty(
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
     int Property,
   ) {
     return _clang_PrintingPolicy_getProperty(
@@ -4264,13 +4231,13 @@
   late final _clang_PrintingPolicy_getProperty_ptr =
       _lookup<ffi.NativeFunction<Native_clang_PrintingPolicy_getProperty>>(
           'clang_PrintingPolicy_getProperty');
-  late final _dart_clang_PrintingPolicy_getProperty
-      _clang_PrintingPolicy_getProperty = _clang_PrintingPolicy_getProperty_ptr
-          .asFunction<_dart_clang_PrintingPolicy_getProperty>();
+  late final _clang_PrintingPolicy_getProperty =
+      _clang_PrintingPolicy_getProperty_ptr
+          .asFunction<int Function(CXPrintingPolicy, int)>();
 
   /// Set a property value for the given printing policy.
   void clang_PrintingPolicy_setProperty(
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
     int Property,
     int Value,
   ) {
@@ -4284,15 +4251,15 @@
   late final _clang_PrintingPolicy_setProperty_ptr =
       _lookup<ffi.NativeFunction<Native_clang_PrintingPolicy_setProperty>>(
           'clang_PrintingPolicy_setProperty');
-  late final _dart_clang_PrintingPolicy_setProperty
-      _clang_PrintingPolicy_setProperty = _clang_PrintingPolicy_setProperty_ptr
-          .asFunction<_dart_clang_PrintingPolicy_setProperty>();
+  late final _clang_PrintingPolicy_setProperty =
+      _clang_PrintingPolicy_setProperty_ptr
+          .asFunction<void Function(CXPrintingPolicy, int, int)>();
 
   /// Retrieve the default policy for the cursor.
   ///
   /// The policy should be released after use with \c
   /// clang_PrintingPolicy_dispose.
-  ffi.Pointer<ffi.Void> clang_getCursorPrintingPolicy(
+  CXPrintingPolicy clang_getCursorPrintingPolicy(
     CXCursor arg0,
   ) {
     return _clang_getCursorPrintingPolicy(
@@ -4303,13 +4270,12 @@
   late final _clang_getCursorPrintingPolicy_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorPrintingPolicy>>(
           'clang_getCursorPrintingPolicy');
-  late final _dart_clang_getCursorPrintingPolicy
-      _clang_getCursorPrintingPolicy = _clang_getCursorPrintingPolicy_ptr
-          .asFunction<_dart_clang_getCursorPrintingPolicy>();
+  late final _clang_getCursorPrintingPolicy = _clang_getCursorPrintingPolicy_ptr
+      .asFunction<CXPrintingPolicy Function(CXCursor)>();
 
   /// Release a printing policy.
   void clang_PrintingPolicy_dispose(
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
   ) {
     return _clang_PrintingPolicy_dispose(
       Policy,
@@ -4319,9 +4285,8 @@
   late final _clang_PrintingPolicy_dispose_ptr =
       _lookup<ffi.NativeFunction<Native_clang_PrintingPolicy_dispose>>(
           'clang_PrintingPolicy_dispose');
-  late final _dart_clang_PrintingPolicy_dispose _clang_PrintingPolicy_dispose =
-      _clang_PrintingPolicy_dispose_ptr
-          .asFunction<_dart_clang_PrintingPolicy_dispose>();
+  late final _clang_PrintingPolicy_dispose = _clang_PrintingPolicy_dispose_ptr
+      .asFunction<void Function(CXPrintingPolicy)>();
 
   /// Pretty print declarations.
   ///
@@ -4334,7 +4299,7 @@
   /// other cursors.
   CXString clang_getCursorPrettyPrinted(
     CXCursor Cursor,
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
   ) {
     return _clang_getCursorPrettyPrinted(
       Cursor,
@@ -4345,9 +4310,8 @@
   late final _clang_getCursorPrettyPrinted_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorPrettyPrinted>>(
           'clang_getCursorPrettyPrinted');
-  late final _dart_clang_getCursorPrettyPrinted _clang_getCursorPrettyPrinted =
-      _clang_getCursorPrettyPrinted_ptr
-          .asFunction<_dart_clang_getCursorPrettyPrinted>();
+  late final _clang_getCursorPrettyPrinted = _clang_getCursorPrettyPrinted_ptr
+      .asFunction<CXString Function(CXCursor, CXPrintingPolicy)>();
 
   /// Retrieve the display name for the entity referenced by this cursor.
   ///
@@ -4365,9 +4329,8 @@
   late final _clang_getCursorDisplayName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorDisplayName>>(
           'clang_getCursorDisplayName');
-  late final _dart_clang_getCursorDisplayName _clang_getCursorDisplayName =
-      _clang_getCursorDisplayName_ptr
-          .asFunction<_dart_clang_getCursorDisplayName>();
+  late final _clang_getCursorDisplayName =
+      _clang_getCursorDisplayName_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// For a cursor that is a reference, retrieve a cursor representing the
   /// entity that it references.
@@ -4389,9 +4352,8 @@
   late final _clang_getCursorReferenced_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorReferenced>>(
           'clang_getCursorReferenced');
-  late final _dart_clang_getCursorReferenced _clang_getCursorReferenced =
-      _clang_getCursorReferenced_ptr
-          .asFunction<_dart_clang_getCursorReferenced>();
+  late final _clang_getCursorReferenced =
+      _clang_getCursorReferenced_ptr.asFunction<CXCursor Function(CXCursor)>();
 
   /// For a cursor that is either a reference to or a declaration
   /// of some entity, retrieve a cursor that describes the definition of
@@ -4430,9 +4392,8 @@
   late final _clang_getCursorDefinition_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorDefinition>>(
           'clang_getCursorDefinition');
-  late final _dart_clang_getCursorDefinition _clang_getCursorDefinition =
-      _clang_getCursorDefinition_ptr
-          .asFunction<_dart_clang_getCursorDefinition>();
+  late final _clang_getCursorDefinition =
+      _clang_getCursorDefinition_ptr.asFunction<CXCursor Function(CXCursor)>();
 
   /// Determine whether the declaration pointed to by this cursor
   /// is also a definition of that entity.
@@ -4447,9 +4408,8 @@
   late final _clang_isCursorDefinition_ptr =
       _lookup<ffi.NativeFunction<Native_clang_isCursorDefinition>>(
           'clang_isCursorDefinition');
-  late final _dart_clang_isCursorDefinition _clang_isCursorDefinition =
-      _clang_isCursorDefinition_ptr
-          .asFunction<_dart_clang_isCursorDefinition>();
+  late final _clang_isCursorDefinition =
+      _clang_isCursorDefinition_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the canonical cursor corresponding to the given cursor.
   ///
@@ -4484,9 +4444,8 @@
   late final _clang_getCanonicalCursor_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCanonicalCursor>>(
           'clang_getCanonicalCursor');
-  late final _dart_clang_getCanonicalCursor _clang_getCanonicalCursor =
-      _clang_getCanonicalCursor_ptr
-          .asFunction<_dart_clang_getCanonicalCursor>();
+  late final _clang_getCanonicalCursor =
+      _clang_getCanonicalCursor_ptr.asFunction<CXCursor Function(CXCursor)>();
 
   /// If the cursor points to a selector identifier in an Objective-C
   /// method or message expression, this returns the selector index.
@@ -4508,10 +4467,9 @@
   late final _clang_Cursor_getObjCSelectorIndex_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getObjCSelectorIndex>>(
           'clang_Cursor_getObjCSelectorIndex');
-  late final _dart_clang_Cursor_getObjCSelectorIndex
-      _clang_Cursor_getObjCSelectorIndex =
+  late final _clang_Cursor_getObjCSelectorIndex =
       _clang_Cursor_getObjCSelectorIndex_ptr
-          .asFunction<_dart_clang_Cursor_getObjCSelectorIndex>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Given a cursor pointing to a C++ method call or an Objective-C
   /// message, returns non-zero if the method/message is "dynamic", meaning:
@@ -4533,9 +4491,8 @@
   late final _clang_Cursor_isDynamicCall_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isDynamicCall>>(
           'clang_Cursor_isDynamicCall');
-  late final _dart_clang_Cursor_isDynamicCall _clang_Cursor_isDynamicCall =
-      _clang_Cursor_isDynamicCall_ptr
-          .asFunction<_dart_clang_Cursor_isDynamicCall>();
+  late final _clang_Cursor_isDynamicCall =
+      _clang_Cursor_isDynamicCall_ptr.asFunction<int Function(CXCursor)>();
 
   /// Given a cursor pointing to an Objective-C message or property
   /// reference, or C++ method call, returns the CXType of the receiver.
@@ -4550,9 +4507,8 @@
   late final _clang_Cursor_getReceiverType_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getReceiverType>>(
           'clang_Cursor_getReceiverType');
-  late final _dart_clang_Cursor_getReceiverType _clang_Cursor_getReceiverType =
-      _clang_Cursor_getReceiverType_ptr
-          .asFunction<_dart_clang_Cursor_getReceiverType>();
+  late final _clang_Cursor_getReceiverType =
+      _clang_Cursor_getReceiverType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Given a cursor that represents a property declaration, return the
   /// associated property attributes. The bits are formed from
@@ -4572,10 +4528,9 @@
   late final _clang_Cursor_getObjCPropertyAttributes_ptr = _lookup<
           ffi.NativeFunction<Native_clang_Cursor_getObjCPropertyAttributes>>(
       'clang_Cursor_getObjCPropertyAttributes');
-  late final _dart_clang_Cursor_getObjCPropertyAttributes
-      _clang_Cursor_getObjCPropertyAttributes =
+  late final _clang_Cursor_getObjCPropertyAttributes =
       _clang_Cursor_getObjCPropertyAttributes_ptr
-          .asFunction<_dart_clang_Cursor_getObjCPropertyAttributes>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Given a cursor that represents a property declaration, return the
   /// name of the method that implements the getter.
@@ -4590,10 +4545,9 @@
   late final _clang_Cursor_getObjCPropertyGetterName_ptr = _lookup<
           ffi.NativeFunction<Native_clang_Cursor_getObjCPropertyGetterName>>(
       'clang_Cursor_getObjCPropertyGetterName');
-  late final _dart_clang_Cursor_getObjCPropertyGetterName
-      _clang_Cursor_getObjCPropertyGetterName =
+  late final _clang_Cursor_getObjCPropertyGetterName =
       _clang_Cursor_getObjCPropertyGetterName_ptr
-          .asFunction<_dart_clang_Cursor_getObjCPropertyGetterName>();
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Given a cursor that represents a property declaration, return the
   /// name of the method that implements the setter, if any.
@@ -4608,10 +4562,9 @@
   late final _clang_Cursor_getObjCPropertySetterName_ptr = _lookup<
           ffi.NativeFunction<Native_clang_Cursor_getObjCPropertySetterName>>(
       'clang_Cursor_getObjCPropertySetterName');
-  late final _dart_clang_Cursor_getObjCPropertySetterName
-      _clang_Cursor_getObjCPropertySetterName =
+  late final _clang_Cursor_getObjCPropertySetterName =
       _clang_Cursor_getObjCPropertySetterName_ptr
-          .asFunction<_dart_clang_Cursor_getObjCPropertySetterName>();
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Given a cursor that represents an Objective-C method or parameter
   /// declaration, return the associated Objective-C qualifiers for the return
@@ -4628,10 +4581,9 @@
   late final _clang_Cursor_getObjCDeclQualifiers_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getObjCDeclQualifiers>>(
           'clang_Cursor_getObjCDeclQualifiers');
-  late final _dart_clang_Cursor_getObjCDeclQualifiers
-      _clang_Cursor_getObjCDeclQualifiers =
+  late final _clang_Cursor_getObjCDeclQualifiers =
       _clang_Cursor_getObjCDeclQualifiers_ptr
-          .asFunction<_dart_clang_Cursor_getObjCDeclQualifiers>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Given a cursor that represents an Objective-C method or property
   /// declaration, return non-zero if the declaration was affected by "\@optional".
@@ -4647,9 +4599,8 @@
   late final _clang_Cursor_isObjCOptional_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isObjCOptional>>(
           'clang_Cursor_isObjCOptional');
-  late final _dart_clang_Cursor_isObjCOptional _clang_Cursor_isObjCOptional =
-      _clang_Cursor_isObjCOptional_ptr
-          .asFunction<_dart_clang_Cursor_isObjCOptional>();
+  late final _clang_Cursor_isObjCOptional =
+      _clang_Cursor_isObjCOptional_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns non-zero if the given cursor is a variadic function or method.
   int clang_Cursor_isVariadic(
@@ -4663,8 +4614,8 @@
   late final _clang_Cursor_isVariadic_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isVariadic>>(
           'clang_Cursor_isVariadic');
-  late final _dart_clang_Cursor_isVariadic _clang_Cursor_isVariadic =
-      _clang_Cursor_isVariadic_ptr.asFunction<_dart_clang_Cursor_isVariadic>();
+  late final _clang_Cursor_isVariadic =
+      _clang_Cursor_isVariadic_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns non-zero if the given cursor points to a symbol marked with
   /// external_source_symbol attribute.
@@ -4694,9 +4645,10 @@
   late final _clang_Cursor_isExternalSymbol_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_isExternalSymbol>>(
           'clang_Cursor_isExternalSymbol');
-  late final _dart_clang_Cursor_isExternalSymbol
-      _clang_Cursor_isExternalSymbol = _clang_Cursor_isExternalSymbol_ptr
-          .asFunction<_dart_clang_Cursor_isExternalSymbol>();
+  late final _clang_Cursor_isExternalSymbol =
+      _clang_Cursor_isExternalSymbol_ptr.asFunction<
+          int Function(CXCursor, ffi.Pointer<CXString>, ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Given a cursor that represents a declaration, return the associated
   /// comment's source range.  The range may include multiple consecutive comments
@@ -4712,9 +4664,8 @@
   late final _clang_Cursor_getCommentRange_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getCommentRange>>(
           'clang_Cursor_getCommentRange');
-  late final _dart_clang_Cursor_getCommentRange _clang_Cursor_getCommentRange =
-      _clang_Cursor_getCommentRange_ptr
-          .asFunction<_dart_clang_Cursor_getCommentRange>();
+  late final _clang_Cursor_getCommentRange = _clang_Cursor_getCommentRange_ptr
+      .asFunction<CXSourceRange Function(CXCursor)>();
 
   /// Given a cursor that represents a declaration, return the associated
   /// comment text, including comment markers.
@@ -4729,9 +4680,9 @@
   late final _clang_Cursor_getRawCommentText_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getRawCommentText>>(
           'clang_Cursor_getRawCommentText');
-  late final _dart_clang_Cursor_getRawCommentText
-      _clang_Cursor_getRawCommentText = _clang_Cursor_getRawCommentText_ptr
-          .asFunction<_dart_clang_Cursor_getRawCommentText>();
+  late final _clang_Cursor_getRawCommentText =
+      _clang_Cursor_getRawCommentText_ptr
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Given a cursor that represents a documentable entity (e.g.,
   /// declaration), return the associated \paragraph; otherwise return the
@@ -4747,9 +4698,9 @@
   late final _clang_Cursor_getBriefCommentText_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getBriefCommentText>>(
           'clang_Cursor_getBriefCommentText');
-  late final _dart_clang_Cursor_getBriefCommentText
-      _clang_Cursor_getBriefCommentText = _clang_Cursor_getBriefCommentText_ptr
-          .asFunction<_dart_clang_Cursor_getBriefCommentText>();
+  late final _clang_Cursor_getBriefCommentText =
+      _clang_Cursor_getBriefCommentText_ptr
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Retrieve the CXString representing the mangled name of the cursor.
   CXString clang_Cursor_getMangling(
@@ -4763,9 +4714,8 @@
   late final _clang_Cursor_getMangling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getMangling>>(
           'clang_Cursor_getMangling');
-  late final _dart_clang_Cursor_getMangling _clang_Cursor_getMangling =
-      _clang_Cursor_getMangling_ptr
-          .asFunction<_dart_clang_Cursor_getMangling>();
+  late final _clang_Cursor_getMangling =
+      _clang_Cursor_getMangling_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// Retrieve the CXStrings representing the mangled symbols of the C++
   /// constructor or destructor at the cursor.
@@ -4780,9 +4730,8 @@
   late final _clang_Cursor_getCXXManglings_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getCXXManglings>>(
           'clang_Cursor_getCXXManglings');
-  late final _dart_clang_Cursor_getCXXManglings _clang_Cursor_getCXXManglings =
-      _clang_Cursor_getCXXManglings_ptr
-          .asFunction<_dart_clang_Cursor_getCXXManglings>();
+  late final _clang_Cursor_getCXXManglings = _clang_Cursor_getCXXManglings_ptr
+      .asFunction<ffi.Pointer<CXStringSet> Function(CXCursor)>();
 
   /// Retrieve the CXStrings representing the mangled symbols of the ObjC
   /// class interface or implementation at the cursor.
@@ -4797,12 +4746,11 @@
   late final _clang_Cursor_getObjCManglings_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getObjCManglings>>(
           'clang_Cursor_getObjCManglings');
-  late final _dart_clang_Cursor_getObjCManglings
-      _clang_Cursor_getObjCManglings = _clang_Cursor_getObjCManglings_ptr
-          .asFunction<_dart_clang_Cursor_getObjCManglings>();
+  late final _clang_Cursor_getObjCManglings = _clang_Cursor_getObjCManglings_ptr
+      .asFunction<ffi.Pointer<CXStringSet> Function(CXCursor)>();
 
   /// Given a CXCursor_ModuleImportDecl cursor, return the associated module.
-  ffi.Pointer<ffi.Void> clang_Cursor_getModule(
+  CXModule clang_Cursor_getModule(
     CXCursor C,
   ) {
     return _clang_Cursor_getModule(
@@ -4813,14 +4761,14 @@
   late final _clang_Cursor_getModule_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_getModule>>(
           'clang_Cursor_getModule');
-  late final _dart_clang_Cursor_getModule _clang_Cursor_getModule =
-      _clang_Cursor_getModule_ptr.asFunction<_dart_clang_Cursor_getModule>();
+  late final _clang_Cursor_getModule =
+      _clang_Cursor_getModule_ptr.asFunction<CXModule Function(CXCursor)>();
 
   /// Given a CXFile header file, return the module that contains it, if one
   /// exists.
-  ffi.Pointer<ffi.Void> clang_getModuleForFile(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
-    ffi.Pointer<ffi.Void> arg1,
+  CXModule clang_getModuleForFile(
+    CXTranslationUnit arg0,
+    CXFile arg1,
   ) {
     return _clang_getModuleForFile(
       arg0,
@@ -4831,14 +4779,14 @@
   late final _clang_getModuleForFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getModuleForFile>>(
           'clang_getModuleForFile');
-  late final _dart_clang_getModuleForFile _clang_getModuleForFile =
-      _clang_getModuleForFile_ptr.asFunction<_dart_clang_getModuleForFile>();
+  late final _clang_getModuleForFile = _clang_getModuleForFile_ptr
+      .asFunction<CXModule Function(CXTranslationUnit, CXFile)>();
 
   /// \param Module a module object.
   ///
   /// \returns the module file where the provided module object came from.
-  ffi.Pointer<ffi.Void> clang_Module_getASTFile(
-    ffi.Pointer<ffi.Void> Module,
+  CXFile clang_Module_getASTFile(
+    CXModule Module,
   ) {
     return _clang_Module_getASTFile(
       Module,
@@ -4848,15 +4796,15 @@
   late final _clang_Module_getASTFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Module_getASTFile>>(
           'clang_Module_getASTFile');
-  late final _dart_clang_Module_getASTFile _clang_Module_getASTFile =
-      _clang_Module_getASTFile_ptr.asFunction<_dart_clang_Module_getASTFile>();
+  late final _clang_Module_getASTFile =
+      _clang_Module_getASTFile_ptr.asFunction<CXFile Function(CXModule)>();
 
   /// \param Module a module object.
   ///
   /// \returns the parent of a sub-module or NULL if the given module is top-level,
   /// e.g. for 'std.vector' it will return the 'std' module.
-  ffi.Pointer<ffi.Void> clang_Module_getParent(
-    ffi.Pointer<ffi.Void> Module,
+  CXModule clang_Module_getParent(
+    CXModule Module,
   ) {
     return _clang_Module_getParent(
       Module,
@@ -4866,15 +4814,15 @@
   late final _clang_Module_getParent_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Module_getParent>>(
           'clang_Module_getParent');
-  late final _dart_clang_Module_getParent _clang_Module_getParent =
-      _clang_Module_getParent_ptr.asFunction<_dart_clang_Module_getParent>();
+  late final _clang_Module_getParent =
+      _clang_Module_getParent_ptr.asFunction<CXModule Function(CXModule)>();
 
   /// \param Module a module object.
   ///
   /// \returns the name of the module, e.g. for the 'std.vector' sub-module it
   /// will return "vector".
   CXString clang_Module_getName(
-    ffi.Pointer<ffi.Void> Module,
+    CXModule Module,
   ) {
     return _clang_Module_getName(
       Module,
@@ -4884,14 +4832,14 @@
   late final _clang_Module_getName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Module_getName>>(
           'clang_Module_getName');
-  late final _dart_clang_Module_getName _clang_Module_getName =
-      _clang_Module_getName_ptr.asFunction<_dart_clang_Module_getName>();
+  late final _clang_Module_getName =
+      _clang_Module_getName_ptr.asFunction<CXString Function(CXModule)>();
 
   /// \param Module a module object.
   ///
   /// \returns the full name of the module, e.g. "std.vector".
   CXString clang_Module_getFullName(
-    ffi.Pointer<ffi.Void> Module,
+    CXModule Module,
   ) {
     return _clang_Module_getFullName(
       Module,
@@ -4901,15 +4849,14 @@
   late final _clang_Module_getFullName_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Module_getFullName>>(
           'clang_Module_getFullName');
-  late final _dart_clang_Module_getFullName _clang_Module_getFullName =
-      _clang_Module_getFullName_ptr
-          .asFunction<_dart_clang_Module_getFullName>();
+  late final _clang_Module_getFullName =
+      _clang_Module_getFullName_ptr.asFunction<CXString Function(CXModule)>();
 
   /// \param Module a module object.
   ///
   /// \returns non-zero if the module is a system one.
   int clang_Module_isSystem(
-    ffi.Pointer<ffi.Void> Module,
+    CXModule Module,
   ) {
     return _clang_Module_isSystem(
       Module,
@@ -4919,15 +4866,15 @@
   late final _clang_Module_isSystem_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Module_isSystem>>(
           'clang_Module_isSystem');
-  late final _dart_clang_Module_isSystem _clang_Module_isSystem =
-      _clang_Module_isSystem_ptr.asFunction<_dart_clang_Module_isSystem>();
+  late final _clang_Module_isSystem =
+      _clang_Module_isSystem_ptr.asFunction<int Function(CXModule)>();
 
   /// \param Module a module object.
   ///
   /// \returns the number of top level headers associated with this module.
   int clang_Module_getNumTopLevelHeaders(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
-    ffi.Pointer<ffi.Void> Module,
+    CXTranslationUnit arg0,
+    CXModule Module,
   ) {
     return _clang_Module_getNumTopLevelHeaders(
       arg0,
@@ -4938,19 +4885,18 @@
   late final _clang_Module_getNumTopLevelHeaders_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Module_getNumTopLevelHeaders>>(
           'clang_Module_getNumTopLevelHeaders');
-  late final _dart_clang_Module_getNumTopLevelHeaders
-      _clang_Module_getNumTopLevelHeaders =
+  late final _clang_Module_getNumTopLevelHeaders =
       _clang_Module_getNumTopLevelHeaders_ptr
-          .asFunction<_dart_clang_Module_getNumTopLevelHeaders>();
+          .asFunction<int Function(CXTranslationUnit, CXModule)>();
 
   /// \param Module a module object.
   ///
   /// \param Index top level header index (zero-based).
   ///
   /// \returns the specified top level header associated with the module.
-  ffi.Pointer<ffi.Void> clang_Module_getTopLevelHeader(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
-    ffi.Pointer<ffi.Void> Module,
+  CXFile clang_Module_getTopLevelHeader(
+    CXTranslationUnit arg0,
+    CXModule Module,
     int Index,
   ) {
     return _clang_Module_getTopLevelHeader(
@@ -4963,9 +4909,9 @@
   late final _clang_Module_getTopLevelHeader_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Module_getTopLevelHeader>>(
           'clang_Module_getTopLevelHeader');
-  late final _dart_clang_Module_getTopLevelHeader
-      _clang_Module_getTopLevelHeader = _clang_Module_getTopLevelHeader_ptr
-          .asFunction<_dart_clang_Module_getTopLevelHeader>();
+  late final _clang_Module_getTopLevelHeader =
+      _clang_Module_getTopLevelHeader_ptr
+          .asFunction<CXFile Function(CXTranslationUnit, CXModule, int)>();
 
   /// Determine if a C++ constructor is a converting constructor.
   int clang_CXXConstructor_isConvertingConstructor(
@@ -4980,10 +4926,9 @@
           ffi.NativeFunction<
               Native_clang_CXXConstructor_isConvertingConstructor>>(
       'clang_CXXConstructor_isConvertingConstructor');
-  late final _dart_clang_CXXConstructor_isConvertingConstructor
-      _clang_CXXConstructor_isConvertingConstructor =
+  late final _clang_CXXConstructor_isConvertingConstructor =
       _clang_CXXConstructor_isConvertingConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isConvertingConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ constructor is a copy constructor.
   int clang_CXXConstructor_isCopyConstructor(
@@ -4997,10 +4942,9 @@
   late final _clang_CXXConstructor_isCopyConstructor_ptr = _lookup<
           ffi.NativeFunction<Native_clang_CXXConstructor_isCopyConstructor>>(
       'clang_CXXConstructor_isCopyConstructor');
-  late final _dart_clang_CXXConstructor_isCopyConstructor
-      _clang_CXXConstructor_isCopyConstructor =
+  late final _clang_CXXConstructor_isCopyConstructor =
       _clang_CXXConstructor_isCopyConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isCopyConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ constructor is the default constructor.
   int clang_CXXConstructor_isDefaultConstructor(
@@ -5014,10 +4958,9 @@
   late final _clang_CXXConstructor_isDefaultConstructor_ptr = _lookup<
           ffi.NativeFunction<Native_clang_CXXConstructor_isDefaultConstructor>>(
       'clang_CXXConstructor_isDefaultConstructor');
-  late final _dart_clang_CXXConstructor_isDefaultConstructor
-      _clang_CXXConstructor_isDefaultConstructor =
+  late final _clang_CXXConstructor_isDefaultConstructor =
       _clang_CXXConstructor_isDefaultConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isDefaultConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ constructor is a move constructor.
   int clang_CXXConstructor_isMoveConstructor(
@@ -5031,10 +4974,9 @@
   late final _clang_CXXConstructor_isMoveConstructor_ptr = _lookup<
           ffi.NativeFunction<Native_clang_CXXConstructor_isMoveConstructor>>(
       'clang_CXXConstructor_isMoveConstructor');
-  late final _dart_clang_CXXConstructor_isMoveConstructor
-      _clang_CXXConstructor_isMoveConstructor =
+  late final _clang_CXXConstructor_isMoveConstructor =
       _clang_CXXConstructor_isMoveConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isMoveConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ field is declared 'mutable'.
   int clang_CXXField_isMutable(
@@ -5048,9 +4990,8 @@
   late final _clang_CXXField_isMutable_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXXField_isMutable>>(
           'clang_CXXField_isMutable');
-  late final _dart_clang_CXXField_isMutable _clang_CXXField_isMutable =
-      _clang_CXXField_isMutable_ptr
-          .asFunction<_dart_clang_CXXField_isMutable>();
+  late final _clang_CXXField_isMutable =
+      _clang_CXXField_isMutable_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ method is declared '= default'.
   int clang_CXXMethod_isDefaulted(
@@ -5064,9 +5005,8 @@
   late final _clang_CXXMethod_isDefaulted_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXXMethod_isDefaulted>>(
           'clang_CXXMethod_isDefaulted');
-  late final _dart_clang_CXXMethod_isDefaulted _clang_CXXMethod_isDefaulted =
-      _clang_CXXMethod_isDefaulted_ptr
-          .asFunction<_dart_clang_CXXMethod_isDefaulted>();
+  late final _clang_CXXMethod_isDefaulted =
+      _clang_CXXMethod_isDefaulted_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is
   /// pure virtual.
@@ -5081,9 +5021,8 @@
   late final _clang_CXXMethod_isPureVirtual_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXXMethod_isPureVirtual>>(
           'clang_CXXMethod_isPureVirtual');
-  late final _dart_clang_CXXMethod_isPureVirtual
-      _clang_CXXMethod_isPureVirtual = _clang_CXXMethod_isPureVirtual_ptr
-          .asFunction<_dart_clang_CXXMethod_isPureVirtual>();
+  late final _clang_CXXMethod_isPureVirtual =
+      _clang_CXXMethod_isPureVirtual_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is
   /// declared 'static'.
@@ -5098,9 +5037,8 @@
   late final _clang_CXXMethod_isStatic_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXXMethod_isStatic>>(
           'clang_CXXMethod_isStatic');
-  late final _dart_clang_CXXMethod_isStatic _clang_CXXMethod_isStatic =
-      _clang_CXXMethod_isStatic_ptr
-          .asFunction<_dart_clang_CXXMethod_isStatic>();
+  late final _clang_CXXMethod_isStatic =
+      _clang_CXXMethod_isStatic_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is
   /// explicitly declared 'virtual' or if it overrides a virtual method from
@@ -5116,9 +5054,8 @@
   late final _clang_CXXMethod_isVirtual_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXXMethod_isVirtual>>(
           'clang_CXXMethod_isVirtual');
-  late final _dart_clang_CXXMethod_isVirtual _clang_CXXMethod_isVirtual =
-      _clang_CXXMethod_isVirtual_ptr
-          .asFunction<_dart_clang_CXXMethod_isVirtual>();
+  late final _clang_CXXMethod_isVirtual =
+      _clang_CXXMethod_isVirtual_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ record is abstract, i.e. whether a class or struct
   /// has a pure virtual member function.
@@ -5133,9 +5070,8 @@
   late final _clang_CXXRecord_isAbstract_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXXRecord_isAbstract>>(
           'clang_CXXRecord_isAbstract');
-  late final _dart_clang_CXXRecord_isAbstract _clang_CXXRecord_isAbstract =
-      _clang_CXXRecord_isAbstract_ptr
-          .asFunction<_dart_clang_CXXRecord_isAbstract>();
+  late final _clang_CXXRecord_isAbstract =
+      _clang_CXXRecord_isAbstract_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if an enum declaration refers to a scoped enum.
   int clang_EnumDecl_isScoped(
@@ -5149,8 +5085,8 @@
   late final _clang_EnumDecl_isScoped_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EnumDecl_isScoped>>(
           'clang_EnumDecl_isScoped');
-  late final _dart_clang_EnumDecl_isScoped _clang_EnumDecl_isScoped =
-      _clang_EnumDecl_isScoped_ptr.asFunction<_dart_clang_EnumDecl_isScoped>();
+  late final _clang_EnumDecl_isScoped =
+      _clang_EnumDecl_isScoped_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is
   /// declared 'const'.
@@ -5165,8 +5101,8 @@
   late final _clang_CXXMethod_isConst_ptr =
       _lookup<ffi.NativeFunction<Native_clang_CXXMethod_isConst>>(
           'clang_CXXMethod_isConst');
-  late final _dart_clang_CXXMethod_isConst _clang_CXXMethod_isConst =
-      _clang_CXXMethod_isConst_ptr.asFunction<_dart_clang_CXXMethod_isConst>();
+  late final _clang_CXXMethod_isConst =
+      _clang_CXXMethod_isConst_ptr.asFunction<int Function(CXCursor)>();
 
   /// Given a cursor that represents a template, determine
   /// the cursor kind of the specializations would be generated by instantiating
@@ -5194,9 +5130,8 @@
   late final _clang_getTemplateCursorKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTemplateCursorKind>>(
           'clang_getTemplateCursorKind');
-  late final _dart_clang_getTemplateCursorKind _clang_getTemplateCursorKind =
-      _clang_getTemplateCursorKind_ptr
-          .asFunction<_dart_clang_getTemplateCursorKind>();
+  late final _clang_getTemplateCursorKind =
+      _clang_getTemplateCursorKind_ptr.asFunction<int Function(CXCursor)>();
 
   /// Given a cursor that may represent a specialization or instantiation
   /// of a template, retrieve the cursor that represents the template that it
@@ -5235,10 +5170,9 @@
   late final _clang_getSpecializedCursorTemplate_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getSpecializedCursorTemplate>>(
           'clang_getSpecializedCursorTemplate');
-  late final _dart_clang_getSpecializedCursorTemplate
-      _clang_getSpecializedCursorTemplate =
+  late final _clang_getSpecializedCursorTemplate =
       _clang_getSpecializedCursorTemplate_ptr
-          .asFunction<_dart_clang_getSpecializedCursorTemplate>();
+          .asFunction<CXCursor Function(CXCursor)>();
 
   /// Given a cursor that references something else, return the source range
   /// covering that reference.
@@ -5271,10 +5205,9 @@
   late final _clang_getCursorReferenceNameRange_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorReferenceNameRange>>(
           'clang_getCursorReferenceNameRange');
-  late final _dart_clang_getCursorReferenceNameRange
-      _clang_getCursorReferenceNameRange =
+  late final _clang_getCursorReferenceNameRange =
       _clang_getCursorReferenceNameRange_ptr
-          .asFunction<_dart_clang_getCursorReferenceNameRange>();
+          .asFunction<CXSourceRange Function(CXCursor, int, int)>();
 
   /// Get the raw lexical token starting with the given location.
   ///
@@ -5286,7 +5219,7 @@
   /// exist. The returned pointer must be freed with clang_disposeTokens before the
   /// translation unit is destroyed.
   ffi.Pointer<CXToken> clang_getToken(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     CXSourceLocation Location,
   ) {
     return _clang_getToken(
@@ -5297,8 +5230,8 @@
 
   late final _clang_getToken_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getToken>>('clang_getToken');
-  late final _dart_clang_getToken _clang_getToken =
-      _clang_getToken_ptr.asFunction<_dart_clang_getToken>();
+  late final _clang_getToken = _clang_getToken_ptr.asFunction<
+      ffi.Pointer<CXToken> Function(CXTranslationUnit, CXSourceLocation)>();
 
   /// Determine the kind of the given token.
   int clang_getTokenKind(
@@ -5312,15 +5245,15 @@
   late final _clang_getTokenKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTokenKind>>(
           'clang_getTokenKind');
-  late final _dart_clang_getTokenKind _clang_getTokenKind =
-      _clang_getTokenKind_ptr.asFunction<_dart_clang_getTokenKind>();
+  late final _clang_getTokenKind =
+      _clang_getTokenKind_ptr.asFunction<int Function(CXToken)>();
 
   /// Determine the spelling of the given token.
   ///
   /// The spelling of a token is the textual representation of that token, e.g.,
   /// the text of an identifier or keyword.
   CXString clang_getTokenSpelling(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXToken arg1,
   ) {
     return _clang_getTokenSpelling(
@@ -5332,12 +5265,12 @@
   late final _clang_getTokenSpelling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTokenSpelling>>(
           'clang_getTokenSpelling');
-  late final _dart_clang_getTokenSpelling _clang_getTokenSpelling =
-      _clang_getTokenSpelling_ptr.asFunction<_dart_clang_getTokenSpelling>();
+  late final _clang_getTokenSpelling = _clang_getTokenSpelling_ptr
+      .asFunction<CXString Function(CXTranslationUnit, CXToken)>();
 
   /// Retrieve the source location of the given token.
   CXSourceLocation clang_getTokenLocation(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXToken arg1,
   ) {
     return _clang_getTokenLocation(
@@ -5349,12 +5282,12 @@
   late final _clang_getTokenLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTokenLocation>>(
           'clang_getTokenLocation');
-  late final _dart_clang_getTokenLocation _clang_getTokenLocation =
-      _clang_getTokenLocation_ptr.asFunction<_dart_clang_getTokenLocation>();
+  late final _clang_getTokenLocation = _clang_getTokenLocation_ptr
+      .asFunction<CXSourceLocation Function(CXTranslationUnit, CXToken)>();
 
   /// Retrieve a source range that covers the given token.
   CXSourceRange clang_getTokenExtent(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXToken arg1,
   ) {
     return _clang_getTokenExtent(
@@ -5366,8 +5299,8 @@
   late final _clang_getTokenExtent_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getTokenExtent>>(
           'clang_getTokenExtent');
-  late final _dart_clang_getTokenExtent _clang_getTokenExtent =
-      _clang_getTokenExtent_ptr.asFunction<_dart_clang_getTokenExtent>();
+  late final _clang_getTokenExtent = _clang_getTokenExtent_ptr
+      .asFunction<CXSourceRange Function(CXTranslationUnit, CXToken)>();
 
   /// Tokenize the source code described by the given range into raw
   /// lexical tokens.
@@ -5384,7 +5317,7 @@
   /// \param NumTokens will be set to the number of tokens in the \c *Tokens
   /// array.
   void clang_tokenize(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     CXSourceRange Range,
     ffi.Pointer<ffi.Pointer<CXToken>> Tokens,
     ffi.Pointer<ffi.Uint32> NumTokens,
@@ -5399,8 +5332,9 @@
 
   late final _clang_tokenize_ptr =
       _lookup<ffi.NativeFunction<Native_clang_tokenize>>('clang_tokenize');
-  late final _dart_clang_tokenize _clang_tokenize =
-      _clang_tokenize_ptr.asFunction<_dart_clang_tokenize>();
+  late final _clang_tokenize = _clang_tokenize_ptr.asFunction<
+      void Function(CXTranslationUnit, CXSourceRange,
+          ffi.Pointer<ffi.Pointer<CXToken>>, ffi.Pointer<ffi.Uint32>)>();
 
   /// Annotate the given set of tokens by providing cursors for each token
   /// that can be mapped to a specific entity within the abstract syntax tree.
@@ -5431,7 +5365,7 @@
   /// \param Cursors an array of \p NumTokens cursors, whose contents will be
   /// replaced with the cursors corresponding to each token.
   void clang_annotateTokens(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<CXToken> Tokens,
     int NumTokens,
     ffi.Pointer<CXCursor> Cursors,
@@ -5447,12 +5381,13 @@
   late final _clang_annotateTokens_ptr =
       _lookup<ffi.NativeFunction<Native_clang_annotateTokens>>(
           'clang_annotateTokens');
-  late final _dart_clang_annotateTokens _clang_annotateTokens =
-      _clang_annotateTokens_ptr.asFunction<_dart_clang_annotateTokens>();
+  late final _clang_annotateTokens = _clang_annotateTokens_ptr.asFunction<
+      void Function(CXTranslationUnit, ffi.Pointer<CXToken>, int,
+          ffi.Pointer<CXCursor>)>();
 
   /// Free the given set of tokens.
   void clang_disposeTokens(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<CXToken> Tokens,
     int NumTokens,
   ) {
@@ -5466,8 +5401,8 @@
   late final _clang_disposeTokens_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeTokens>>(
           'clang_disposeTokens');
-  late final _dart_clang_disposeTokens _clang_disposeTokens =
-      _clang_disposeTokens_ptr.asFunction<_dart_clang_disposeTokens>();
+  late final _clang_disposeTokens = _clang_disposeTokens_ptr.asFunction<
+      void Function(CXTranslationUnit, ffi.Pointer<CXToken>, int)>();
 
   /// \defgroup CINDEX_DEBUG Debugging facilities
   ///
@@ -5486,9 +5421,8 @@
   late final _clang_getCursorKindSpelling_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorKindSpelling>>(
           'clang_getCursorKindSpelling');
-  late final _dart_clang_getCursorKindSpelling _clang_getCursorKindSpelling =
-      _clang_getCursorKindSpelling_ptr
-          .asFunction<_dart_clang_getCursorKindSpelling>();
+  late final _clang_getCursorKindSpelling =
+      _clang_getCursorKindSpelling_ptr.asFunction<CXString Function(int)>();
 
   void clang_getDefinitionSpellingAndExtent(
     CXCursor arg0,
@@ -5513,10 +5447,16 @@
   late final _clang_getDefinitionSpellingAndExtent_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getDefinitionSpellingAndExtent>>(
           'clang_getDefinitionSpellingAndExtent');
-  late final _dart_clang_getDefinitionSpellingAndExtent
-      _clang_getDefinitionSpellingAndExtent =
-      _clang_getDefinitionSpellingAndExtent_ptr
-          .asFunction<_dart_clang_getDefinitionSpellingAndExtent>();
+  late final _clang_getDefinitionSpellingAndExtent =
+      _clang_getDefinitionSpellingAndExtent_ptr.asFunction<
+          void Function(
+              CXCursor,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   void clang_enableStackTraces() {
     return _clang_enableStackTraces();
@@ -5525,11 +5465,12 @@
   late final _clang_enableStackTraces_ptr =
       _lookup<ffi.NativeFunction<Native_clang_enableStackTraces>>(
           'clang_enableStackTraces');
-  late final _dart_clang_enableStackTraces _clang_enableStackTraces =
-      _clang_enableStackTraces_ptr.asFunction<_dart_clang_enableStackTraces>();
+  late final _clang_enableStackTraces =
+      _clang_enableStackTraces_ptr.asFunction<void Function()>();
 
   void clang_executeOnThread(
-    ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        fn,
     ffi.Pointer<ffi.Void> user_data,
     int stack_size,
   ) {
@@ -5543,8 +5484,12 @@
   late final _clang_executeOnThread_ptr =
       _lookup<ffi.NativeFunction<Native_clang_executeOnThread>>(
           'clang_executeOnThread');
-  late final _dart_clang_executeOnThread _clang_executeOnThread =
-      _clang_executeOnThread_ptr.asFunction<_dart_clang_executeOnThread>();
+  late final _clang_executeOnThread = _clang_executeOnThread_ptr.asFunction<
+      void Function(
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+          ffi.Pointer<ffi.Void>,
+          int)>();
 
   /// Determine the kind of a particular chunk within a completion string.
   ///
@@ -5554,7 +5499,7 @@
   ///
   /// \returns the kind of the chunk at the index \c chunk_number.
   int clang_getCompletionChunkKind(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     int chunk_number,
   ) {
     return _clang_getCompletionChunkKind(
@@ -5566,9 +5511,8 @@
   late final _clang_getCompletionChunkKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionChunkKind>>(
           'clang_getCompletionChunkKind');
-  late final _dart_clang_getCompletionChunkKind _clang_getCompletionChunkKind =
-      _clang_getCompletionChunkKind_ptr
-          .asFunction<_dart_clang_getCompletionChunkKind>();
+  late final _clang_getCompletionChunkKind = _clang_getCompletionChunkKind_ptr
+      .asFunction<int Function(CXCompletionString, int)>();
 
   /// Retrieve the text associated with a particular chunk within a
   /// completion string.
@@ -5579,7 +5523,7 @@
   ///
   /// \returns the text associated with the chunk at index \c chunk_number.
   CXString clang_getCompletionChunkText(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     int chunk_number,
   ) {
     return _clang_getCompletionChunkText(
@@ -5591,9 +5535,8 @@
   late final _clang_getCompletionChunkText_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionChunkText>>(
           'clang_getCompletionChunkText');
-  late final _dart_clang_getCompletionChunkText _clang_getCompletionChunkText =
-      _clang_getCompletionChunkText_ptr
-          .asFunction<_dart_clang_getCompletionChunkText>();
+  late final _clang_getCompletionChunkText = _clang_getCompletionChunkText_ptr
+      .asFunction<CXString Function(CXCompletionString, int)>();
 
   /// Retrieve the completion string associated with a particular chunk
   /// within a completion string.
@@ -5604,8 +5547,8 @@
   ///
   /// \returns the completion string associated with the chunk at index
   /// \c chunk_number.
-  ffi.Pointer<ffi.Void> clang_getCompletionChunkCompletionString(
-    ffi.Pointer<ffi.Void> completion_string,
+  CXCompletionString clang_getCompletionChunkCompletionString(
+    CXCompletionString completion_string,
     int chunk_number,
   ) {
     return _clang_getCompletionChunkCompletionString(
@@ -5617,14 +5560,13 @@
   late final _clang_getCompletionChunkCompletionString_ptr = _lookup<
           ffi.NativeFunction<Native_clang_getCompletionChunkCompletionString>>(
       'clang_getCompletionChunkCompletionString');
-  late final _dart_clang_getCompletionChunkCompletionString
-      _clang_getCompletionChunkCompletionString =
+  late final _clang_getCompletionChunkCompletionString =
       _clang_getCompletionChunkCompletionString_ptr
-          .asFunction<_dart_clang_getCompletionChunkCompletionString>();
+          .asFunction<CXCompletionString Function(CXCompletionString, int)>();
 
   /// Retrieve the number of chunks in the given code-completion string.
   int clang_getNumCompletionChunks(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getNumCompletionChunks(
       completion_string,
@@ -5634,9 +5576,8 @@
   late final _clang_getNumCompletionChunks_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getNumCompletionChunks>>(
           'clang_getNumCompletionChunks');
-  late final _dart_clang_getNumCompletionChunks _clang_getNumCompletionChunks =
-      _clang_getNumCompletionChunks_ptr
-          .asFunction<_dart_clang_getNumCompletionChunks>();
+  late final _clang_getNumCompletionChunks = _clang_getNumCompletionChunks_ptr
+      .asFunction<int Function(CXCompletionString)>();
 
   /// Determine the priority of this code completion.
   ///
@@ -5649,7 +5590,7 @@
   /// \returns The priority of this completion string. Smaller values indicate
   /// higher-priority (more likely) completions.
   int clang_getCompletionPriority(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionPriority(
       completion_string,
@@ -5659,9 +5600,8 @@
   late final _clang_getCompletionPriority_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionPriority>>(
           'clang_getCompletionPriority');
-  late final _dart_clang_getCompletionPriority _clang_getCompletionPriority =
-      _clang_getCompletionPriority_ptr
-          .asFunction<_dart_clang_getCompletionPriority>();
+  late final _clang_getCompletionPriority = _clang_getCompletionPriority_ptr
+      .asFunction<int Function(CXCompletionString)>();
 
   /// Determine the availability of the entity that this code-completion
   /// string refers to.
@@ -5670,7 +5610,7 @@
   ///
   /// \returns The availability of the completion string.
   int clang_getCompletionAvailability(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionAvailability(
       completion_string,
@@ -5680,9 +5620,9 @@
   late final _clang_getCompletionAvailability_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionAvailability>>(
           'clang_getCompletionAvailability');
-  late final _dart_clang_getCompletionAvailability
-      _clang_getCompletionAvailability = _clang_getCompletionAvailability_ptr
-          .asFunction<_dart_clang_getCompletionAvailability>();
+  late final _clang_getCompletionAvailability =
+      _clang_getCompletionAvailability_ptr
+          .asFunction<int Function(CXCompletionString)>();
 
   /// Retrieve the number of annotations associated with the given
   /// completion string.
@@ -5692,7 +5632,7 @@
   /// \returns the number of annotations associated with the given completion
   /// string.
   int clang_getCompletionNumAnnotations(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionNumAnnotations(
       completion_string,
@@ -5702,10 +5642,9 @@
   late final _clang_getCompletionNumAnnotations_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionNumAnnotations>>(
           'clang_getCompletionNumAnnotations');
-  late final _dart_clang_getCompletionNumAnnotations
-      _clang_getCompletionNumAnnotations =
+  late final _clang_getCompletionNumAnnotations =
       _clang_getCompletionNumAnnotations_ptr
-          .asFunction<_dart_clang_getCompletionNumAnnotations>();
+          .asFunction<int Function(CXCompletionString)>();
 
   /// Retrieve the annotation associated with the given completion string.
   ///
@@ -5717,7 +5656,7 @@
   /// \returns annotation string associated with the completion at index
   /// \c annotation_number, or a NULL string if that annotation is not available.
   CXString clang_getCompletionAnnotation(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     int annotation_number,
   ) {
     return _clang_getCompletionAnnotation(
@@ -5729,9 +5668,8 @@
   late final _clang_getCompletionAnnotation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionAnnotation>>(
           'clang_getCompletionAnnotation');
-  late final _dart_clang_getCompletionAnnotation
-      _clang_getCompletionAnnotation = _clang_getCompletionAnnotation_ptr
-          .asFunction<_dart_clang_getCompletionAnnotation>();
+  late final _clang_getCompletionAnnotation = _clang_getCompletionAnnotation_ptr
+      .asFunction<CXString Function(CXCompletionString, int)>();
 
   /// Retrieve the parent context of the given completion string.
   ///
@@ -5748,7 +5686,7 @@
   /// \returns The name of the completion parent, e.g., "NSObject" if
   /// the completion string represents a method in the NSObject class.
   CXString clang_getCompletionParent(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     ffi.Pointer<ffi.Int32> kind,
   ) {
     return _clang_getCompletionParent(
@@ -5760,14 +5698,14 @@
   late final _clang_getCompletionParent_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionParent>>(
           'clang_getCompletionParent');
-  late final _dart_clang_getCompletionParent _clang_getCompletionParent =
-      _clang_getCompletionParent_ptr
-          .asFunction<_dart_clang_getCompletionParent>();
+  late final _clang_getCompletionParent =
+      _clang_getCompletionParent_ptr.asFunction<
+          CXString Function(CXCompletionString, ffi.Pointer<ffi.Int32>)>();
 
   /// Retrieve the brief documentation comment attached to the declaration
   /// that corresponds to the given completion string.
   CXString clang_getCompletionBriefComment(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionBriefComment(
       completion_string,
@@ -5777,9 +5715,9 @@
   late final _clang_getCompletionBriefComment_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionBriefComment>>(
           'clang_getCompletionBriefComment');
-  late final _dart_clang_getCompletionBriefComment
-      _clang_getCompletionBriefComment = _clang_getCompletionBriefComment_ptr
-          .asFunction<_dart_clang_getCompletionBriefComment>();
+  late final _clang_getCompletionBriefComment =
+      _clang_getCompletionBriefComment_ptr
+          .asFunction<CXString Function(CXCompletionString)>();
 
   /// Retrieve a completion string for an arbitrary declaration or macro
   /// definition cursor.
@@ -5788,7 +5726,7 @@
   ///
   /// \returns A non-context-sensitive completion string for declaration and macro
   /// definition cursors, or NULL for other kinds of cursors.
-  ffi.Pointer<ffi.Void> clang_getCursorCompletionString(
+  CXCompletionString clang_getCursorCompletionString(
     CXCursor cursor,
   ) {
     return _clang_getCursorCompletionString(
@@ -5799,9 +5737,9 @@
   late final _clang_getCursorCompletionString_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCursorCompletionString>>(
           'clang_getCursorCompletionString');
-  late final _dart_clang_getCursorCompletionString
-      _clang_getCursorCompletionString = _clang_getCursorCompletionString_ptr
-          .asFunction<_dart_clang_getCursorCompletionString>();
+  late final _clang_getCursorCompletionString =
+      _clang_getCursorCompletionString_ptr
+          .asFunction<CXCompletionString Function(CXCursor)>();
 
   /// Retrieve the number of fix-its for the given completion index.
   ///
@@ -5827,9 +5765,8 @@
   late final _clang_getCompletionNumFixIts_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionNumFixIts>>(
           'clang_getCompletionNumFixIts');
-  late final _dart_clang_getCompletionNumFixIts _clang_getCompletionNumFixIts =
-      _clang_getCompletionNumFixIts_ptr
-          .asFunction<_dart_clang_getCompletionNumFixIts>();
+  late final _clang_getCompletionNumFixIts = _clang_getCompletionNumFixIts_ptr
+      .asFunction<int Function(ffi.Pointer<CXCodeCompleteResults>, int)>();
 
   /// Fix-its that *must* be applied before inserting the text for the
   /// corresponding completion.
@@ -5889,9 +5826,10 @@
   late final _clang_getCompletionFixIt_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getCompletionFixIt>>(
           'clang_getCompletionFixIt');
-  late final _dart_clang_getCompletionFixIt _clang_getCompletionFixIt =
-      _clang_getCompletionFixIt_ptr
-          .asFunction<_dart_clang_getCompletionFixIt>();
+  late final _clang_getCompletionFixIt =
+      _clang_getCompletionFixIt_ptr.asFunction<
+          CXString Function(ffi.Pointer<CXCodeCompleteResults>, int, int,
+              ffi.Pointer<CXSourceRange>)>();
 
   /// Returns a default set of code-completion options that can be
   /// passed to\c clang_codeCompleteAt().
@@ -5902,9 +5840,8 @@
   late final _clang_defaultCodeCompleteOptions_ptr =
       _lookup<ffi.NativeFunction<Native_clang_defaultCodeCompleteOptions>>(
           'clang_defaultCodeCompleteOptions');
-  late final _dart_clang_defaultCodeCompleteOptions
-      _clang_defaultCodeCompleteOptions = _clang_defaultCodeCompleteOptions_ptr
-          .asFunction<_dart_clang_defaultCodeCompleteOptions>();
+  late final _clang_defaultCodeCompleteOptions =
+      _clang_defaultCodeCompleteOptions_ptr.asFunction<int Function()>();
 
   /// Perform code completion at a given location in a translation unit.
   ///
@@ -5973,7 +5910,7 @@
   /// freed with \c clang_disposeCodeCompleteResults(). If code
   /// completion fails, returns NULL.
   ffi.Pointer<CXCodeCompleteResults> clang_codeCompleteAt(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<ffi.Int8> complete_filename,
     int complete_line,
     int complete_column,
@@ -5995,8 +5932,15 @@
   late final _clang_codeCompleteAt_ptr =
       _lookup<ffi.NativeFunction<Native_clang_codeCompleteAt>>(
           'clang_codeCompleteAt');
-  late final _dart_clang_codeCompleteAt _clang_codeCompleteAt =
-      _clang_codeCompleteAt_ptr.asFunction<_dart_clang_codeCompleteAt>();
+  late final _clang_codeCompleteAt = _clang_codeCompleteAt_ptr.asFunction<
+      ffi.Pointer<CXCodeCompleteResults> Function(
+          CXTranslationUnit,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          int,
+          ffi.Pointer<CXUnsavedFile>,
+          int,
+          int)>();
 
   /// Sort the code-completion results in case-insensitive alphabetical
   /// order.
@@ -6016,9 +5960,9 @@
   late final _clang_sortCodeCompletionResults_ptr =
       _lookup<ffi.NativeFunction<Native_clang_sortCodeCompletionResults>>(
           'clang_sortCodeCompletionResults');
-  late final _dart_clang_sortCodeCompletionResults
-      _clang_sortCodeCompletionResults = _clang_sortCodeCompletionResults_ptr
-          .asFunction<_dart_clang_sortCodeCompletionResults>();
+  late final _clang_sortCodeCompletionResults =
+      _clang_sortCodeCompletionResults_ptr
+          .asFunction<void Function(ffi.Pointer<CXCompletionResult>, int)>();
 
   /// Free the given set of code-completion results.
   void clang_disposeCodeCompleteResults(
@@ -6032,9 +5976,9 @@
   late final _clang_disposeCodeCompleteResults_ptr =
       _lookup<ffi.NativeFunction<Native_clang_disposeCodeCompleteResults>>(
           'clang_disposeCodeCompleteResults');
-  late final _dart_clang_disposeCodeCompleteResults
-      _clang_disposeCodeCompleteResults = _clang_disposeCodeCompleteResults_ptr
-          .asFunction<_dart_clang_disposeCodeCompleteResults>();
+  late final _clang_disposeCodeCompleteResults =
+      _clang_disposeCodeCompleteResults_ptr
+          .asFunction<void Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Determine the number of diagnostics produced prior to the
   /// location where code completion was performed.
@@ -6049,10 +5993,9 @@
   late final _clang_codeCompleteGetNumDiagnostics_ptr =
       _lookup<ffi.NativeFunction<Native_clang_codeCompleteGetNumDiagnostics>>(
           'clang_codeCompleteGetNumDiagnostics');
-  late final _dart_clang_codeCompleteGetNumDiagnostics
-      _clang_codeCompleteGetNumDiagnostics =
+  late final _clang_codeCompleteGetNumDiagnostics =
       _clang_codeCompleteGetNumDiagnostics_ptr
-          .asFunction<_dart_clang_codeCompleteGetNumDiagnostics>();
+          .asFunction<int Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Retrieve a diagnostic associated with the given code completion.
   ///
@@ -6061,7 +6004,7 @@
   ///
   /// \returns the requested diagnostic. This diagnostic must be freed
   /// via a call to \c clang_disposeDiagnostic().
-  ffi.Pointer<ffi.Void> clang_codeCompleteGetDiagnostic(
+  CXDiagnostic clang_codeCompleteGetDiagnostic(
     ffi.Pointer<CXCodeCompleteResults> Results,
     int Index,
   ) {
@@ -6074,9 +6017,9 @@
   late final _clang_codeCompleteGetDiagnostic_ptr =
       _lookup<ffi.NativeFunction<Native_clang_codeCompleteGetDiagnostic>>(
           'clang_codeCompleteGetDiagnostic');
-  late final _dart_clang_codeCompleteGetDiagnostic
-      _clang_codeCompleteGetDiagnostic = _clang_codeCompleteGetDiagnostic_ptr
-          .asFunction<_dart_clang_codeCompleteGetDiagnostic>();
+  late final _clang_codeCompleteGetDiagnostic =
+      _clang_codeCompleteGetDiagnostic_ptr.asFunction<
+          CXDiagnostic Function(ffi.Pointer<CXCodeCompleteResults>, int)>();
 
   /// Determines what completions are appropriate for the context
   /// the given code completion.
@@ -6096,9 +6039,8 @@
   late final _clang_codeCompleteGetContexts_ptr =
       _lookup<ffi.NativeFunction<Native_clang_codeCompleteGetContexts>>(
           'clang_codeCompleteGetContexts');
-  late final _dart_clang_codeCompleteGetContexts
-      _clang_codeCompleteGetContexts = _clang_codeCompleteGetContexts_ptr
-          .asFunction<_dart_clang_codeCompleteGetContexts>();
+  late final _clang_codeCompleteGetContexts = _clang_codeCompleteGetContexts_ptr
+      .asFunction<int Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Returns the cursor kind for the container for the current code
   /// completion context. The container is only guaranteed to be set for
@@ -6127,10 +6069,10 @@
   late final _clang_codeCompleteGetContainerKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_codeCompleteGetContainerKind>>(
           'clang_codeCompleteGetContainerKind');
-  late final _dart_clang_codeCompleteGetContainerKind
-      _clang_codeCompleteGetContainerKind =
-      _clang_codeCompleteGetContainerKind_ptr
-          .asFunction<_dart_clang_codeCompleteGetContainerKind>();
+  late final _clang_codeCompleteGetContainerKind =
+      _clang_codeCompleteGetContainerKind_ptr.asFunction<
+          int Function(
+              ffi.Pointer<CXCodeCompleteResults>, ffi.Pointer<ffi.Uint32>)>();
 
   /// Returns the USR for the container for the current code completion
   /// context. If there is not a container for the current context, this
@@ -6150,10 +6092,9 @@
   late final _clang_codeCompleteGetContainerUSR_ptr =
       _lookup<ffi.NativeFunction<Native_clang_codeCompleteGetContainerUSR>>(
           'clang_codeCompleteGetContainerUSR');
-  late final _dart_clang_codeCompleteGetContainerUSR
-      _clang_codeCompleteGetContainerUSR =
+  late final _clang_codeCompleteGetContainerUSR =
       _clang_codeCompleteGetContainerUSR_ptr
-          .asFunction<_dart_clang_codeCompleteGetContainerUSR>();
+          .asFunction<CXString Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Returns the currently-entered selector for an Objective-C message
   /// send, formatted like "initWithFoo:bar:". Only guaranteed to return a
@@ -6175,10 +6116,9 @@
   late final _clang_codeCompleteGetObjCSelector_ptr =
       _lookup<ffi.NativeFunction<Native_clang_codeCompleteGetObjCSelector>>(
           'clang_codeCompleteGetObjCSelector');
-  late final _dart_clang_codeCompleteGetObjCSelector
-      _clang_codeCompleteGetObjCSelector =
+  late final _clang_codeCompleteGetObjCSelector =
       _clang_codeCompleteGetObjCSelector_ptr
-          .asFunction<_dart_clang_codeCompleteGetObjCSelector>();
+          .asFunction<CXString Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Return a version string, suitable for showing to a user, but not
   /// intended to be parsed (the format is not guaranteed to be stable).
@@ -6189,8 +6129,8 @@
   late final _clang_getClangVersion_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getClangVersion>>(
           'clang_getClangVersion');
-  late final _dart_clang_getClangVersion _clang_getClangVersion =
-      _clang_getClangVersion_ptr.asFunction<_dart_clang_getClangVersion>();
+  late final _clang_getClangVersion =
+      _clang_getClangVersion_ptr.asFunction<CXString Function()>();
 
   /// Enable/disable crash recovery.
   ///
@@ -6207,18 +6147,17 @@
   late final _clang_toggleCrashRecovery_ptr =
       _lookup<ffi.NativeFunction<Native_clang_toggleCrashRecovery>>(
           'clang_toggleCrashRecovery');
-  late final _dart_clang_toggleCrashRecovery _clang_toggleCrashRecovery =
-      _clang_toggleCrashRecovery_ptr
-          .asFunction<_dart_clang_toggleCrashRecovery>();
+  late final _clang_toggleCrashRecovery =
+      _clang_toggleCrashRecovery_ptr.asFunction<void Function(int)>();
 
   /// Visit the set of preprocessor inclusions in a translation unit.
   /// The visitor function is called with the provided data for every included
   /// file.  This does not include headers included by the PCH file (unless one
   /// is inspecting the inclusions in the PCH file itself).
   void clang_getInclusions(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor>> visitor,
-    ffi.Pointer<ffi.Void> client_data,
+    CXTranslationUnit tu,
+    CXInclusionVisitor visitor,
+    CXClientData client_data,
   ) {
     return _clang_getInclusions(
       tu,
@@ -6230,13 +6169,13 @@
   late final _clang_getInclusions_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getInclusions>>(
           'clang_getInclusions');
-  late final _dart_clang_getInclusions _clang_getInclusions =
-      _clang_getInclusions_ptr.asFunction<_dart_clang_getInclusions>();
+  late final _clang_getInclusions = _clang_getInclusions_ptr.asFunction<
+      void Function(CXTranslationUnit, CXInclusionVisitor, CXClientData)>();
 
   /// If cursor is a statement declaration tries to evaluate the
   /// statement and if its variable, tries to evaluate its initializer,
   /// into its corresponding type.
-  ffi.Pointer<ffi.Void> clang_Cursor_Evaluate(
+  CXEvalResult clang_Cursor_Evaluate(
     CXCursor C,
   ) {
     return _clang_Cursor_Evaluate(
@@ -6247,12 +6186,12 @@
   late final _clang_Cursor_Evaluate_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Cursor_Evaluate>>(
           'clang_Cursor_Evaluate');
-  late final _dart_clang_Cursor_Evaluate _clang_Cursor_Evaluate =
-      _clang_Cursor_Evaluate_ptr.asFunction<_dart_clang_Cursor_Evaluate>();
+  late final _clang_Cursor_Evaluate =
+      _clang_Cursor_Evaluate_ptr.asFunction<CXEvalResult Function(CXCursor)>();
 
   /// Returns the kind of the evaluated result.
   int clang_EvalResult_getKind(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getKind(
       E,
@@ -6262,14 +6201,13 @@
   late final _clang_EvalResult_getKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_getKind>>(
           'clang_EvalResult_getKind');
-  late final _dart_clang_EvalResult_getKind _clang_EvalResult_getKind =
-      _clang_EvalResult_getKind_ptr
-          .asFunction<_dart_clang_EvalResult_getKind>();
+  late final _clang_EvalResult_getKind =
+      _clang_EvalResult_getKind_ptr.asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as integer if the
   /// kind is Int.
   int clang_EvalResult_getAsInt(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsInt(
       E,
@@ -6279,15 +6217,14 @@
   late final _clang_EvalResult_getAsInt_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_getAsInt>>(
           'clang_EvalResult_getAsInt');
-  late final _dart_clang_EvalResult_getAsInt _clang_EvalResult_getAsInt =
-      _clang_EvalResult_getAsInt_ptr
-          .asFunction<_dart_clang_EvalResult_getAsInt>();
+  late final _clang_EvalResult_getAsInt =
+      _clang_EvalResult_getAsInt_ptr.asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as a long long integer if the
   /// kind is Int. This prevents overflows that may happen if the result is
   /// returned with clang_EvalResult_getAsInt.
   int clang_EvalResult_getAsLongLong(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsLongLong(
       E,
@@ -6297,14 +6234,14 @@
   late final _clang_EvalResult_getAsLongLong_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_getAsLongLong>>(
           'clang_EvalResult_getAsLongLong');
-  late final _dart_clang_EvalResult_getAsLongLong
-      _clang_EvalResult_getAsLongLong = _clang_EvalResult_getAsLongLong_ptr
-          .asFunction<_dart_clang_EvalResult_getAsLongLong>();
+  late final _clang_EvalResult_getAsLongLong =
+      _clang_EvalResult_getAsLongLong_ptr
+          .asFunction<int Function(CXEvalResult)>();
 
   /// Returns a non-zero value if the kind is Int and the evaluation
   /// result resulted in an unsigned integer.
   int clang_EvalResult_isUnsignedInt(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_isUnsignedInt(
       E,
@@ -6314,14 +6251,14 @@
   late final _clang_EvalResult_isUnsignedInt_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_isUnsignedInt>>(
           'clang_EvalResult_isUnsignedInt');
-  late final _dart_clang_EvalResult_isUnsignedInt
-      _clang_EvalResult_isUnsignedInt = _clang_EvalResult_isUnsignedInt_ptr
-          .asFunction<_dart_clang_EvalResult_isUnsignedInt>();
+  late final _clang_EvalResult_isUnsignedInt =
+      _clang_EvalResult_isUnsignedInt_ptr
+          .asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as an unsigned integer if
   /// the kind is Int and clang_EvalResult_isUnsignedInt is non-zero.
   int clang_EvalResult_getAsUnsigned(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsUnsigned(
       E,
@@ -6331,14 +6268,14 @@
   late final _clang_EvalResult_getAsUnsigned_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_getAsUnsigned>>(
           'clang_EvalResult_getAsUnsigned');
-  late final _dart_clang_EvalResult_getAsUnsigned
-      _clang_EvalResult_getAsUnsigned = _clang_EvalResult_getAsUnsigned_ptr
-          .asFunction<_dart_clang_EvalResult_getAsUnsigned>();
+  late final _clang_EvalResult_getAsUnsigned =
+      _clang_EvalResult_getAsUnsigned_ptr
+          .asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as double if the
   /// kind is double.
   double clang_EvalResult_getAsDouble(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsDouble(
       E,
@@ -6348,16 +6285,15 @@
   late final _clang_EvalResult_getAsDouble_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_getAsDouble>>(
           'clang_EvalResult_getAsDouble');
-  late final _dart_clang_EvalResult_getAsDouble _clang_EvalResult_getAsDouble =
-      _clang_EvalResult_getAsDouble_ptr
-          .asFunction<_dart_clang_EvalResult_getAsDouble>();
+  late final _clang_EvalResult_getAsDouble = _clang_EvalResult_getAsDouble_ptr
+      .asFunction<double Function(CXEvalResult)>();
 
   /// Returns the evaluation result as a constant string if the
   /// kind is other than Int or float. User must not free this pointer,
   /// instead call clang_EvalResult_dispose on the CXEvalResult returned
   /// by clang_Cursor_Evaluate.
   ffi.Pointer<ffi.Int8> clang_EvalResult_getAsStr(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsStr(
       E,
@@ -6367,13 +6303,12 @@
   late final _clang_EvalResult_getAsStr_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_getAsStr>>(
           'clang_EvalResult_getAsStr');
-  late final _dart_clang_EvalResult_getAsStr _clang_EvalResult_getAsStr =
-      _clang_EvalResult_getAsStr_ptr
-          .asFunction<_dart_clang_EvalResult_getAsStr>();
+  late final _clang_EvalResult_getAsStr = _clang_EvalResult_getAsStr_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(CXEvalResult)>();
 
   /// Disposes the created Eval memory.
   void clang_EvalResult_dispose(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_dispose(
       E,
@@ -6383,9 +6318,8 @@
   late final _clang_EvalResult_dispose_ptr =
       _lookup<ffi.NativeFunction<Native_clang_EvalResult_dispose>>(
           'clang_EvalResult_dispose');
-  late final _dart_clang_EvalResult_dispose _clang_EvalResult_dispose =
-      _clang_EvalResult_dispose_ptr
-          .asFunction<_dart_clang_EvalResult_dispose>();
+  late final _clang_EvalResult_dispose =
+      _clang_EvalResult_dispose_ptr.asFunction<void Function(CXEvalResult)>();
 
   /// Retrieve a remapping.
   ///
@@ -6393,7 +6327,7 @@
   ///
   /// \returns the requested remapping. This remapping must be freed
   /// via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
-  ffi.Pointer<ffi.Void> clang_getRemappings(
+  CXRemapping clang_getRemappings(
     ffi.Pointer<ffi.Int8> path,
   ) {
     return _clang_getRemappings(
@@ -6404,8 +6338,8 @@
   late final _clang_getRemappings_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getRemappings>>(
           'clang_getRemappings');
-  late final _dart_clang_getRemappings _clang_getRemappings =
-      _clang_getRemappings_ptr.asFunction<_dart_clang_getRemappings>();
+  late final _clang_getRemappings = _clang_getRemappings_ptr
+      .asFunction<CXRemapping Function(ffi.Pointer<ffi.Int8>)>();
 
   /// Retrieve a remapping.
   ///
@@ -6415,7 +6349,7 @@
   ///
   /// \returns the requested remapping. This remapping must be freed
   /// via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
-  ffi.Pointer<ffi.Void> clang_getRemappingsFromFileList(
+  CXRemapping clang_getRemappingsFromFileList(
     ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
     int numFiles,
   ) {
@@ -6428,13 +6362,13 @@
   late final _clang_getRemappingsFromFileList_ptr =
       _lookup<ffi.NativeFunction<Native_clang_getRemappingsFromFileList>>(
           'clang_getRemappingsFromFileList');
-  late final _dart_clang_getRemappingsFromFileList
-      _clang_getRemappingsFromFileList = _clang_getRemappingsFromFileList_ptr
-          .asFunction<_dart_clang_getRemappingsFromFileList>();
+  late final _clang_getRemappingsFromFileList =
+      _clang_getRemappingsFromFileList_ptr.asFunction<
+          CXRemapping Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>, int)>();
 
   /// Determine the number of remappings.
   int clang_remap_getNumFiles(
-    ffi.Pointer<ffi.Void> arg0,
+    CXRemapping arg0,
   ) {
     return _clang_remap_getNumFiles(
       arg0,
@@ -6444,8 +6378,8 @@
   late final _clang_remap_getNumFiles_ptr =
       _lookup<ffi.NativeFunction<Native_clang_remap_getNumFiles>>(
           'clang_remap_getNumFiles');
-  late final _dart_clang_remap_getNumFiles _clang_remap_getNumFiles =
-      _clang_remap_getNumFiles_ptr.asFunction<_dart_clang_remap_getNumFiles>();
+  late final _clang_remap_getNumFiles =
+      _clang_remap_getNumFiles_ptr.asFunction<int Function(CXRemapping)>();
 
   /// Get the original and the associated filename from the remapping.
   ///
@@ -6454,7 +6388,7 @@
   /// \param transformed If non-NULL, will be set to the filename that the original
   /// is associated with.
   void clang_remap_getFilenames(
-    ffi.Pointer<ffi.Void> arg0,
+    CXRemapping arg0,
     int index,
     ffi.Pointer<CXString> original,
     ffi.Pointer<CXString> transformed,
@@ -6470,13 +6404,14 @@
   late final _clang_remap_getFilenames_ptr =
       _lookup<ffi.NativeFunction<Native_clang_remap_getFilenames>>(
           'clang_remap_getFilenames');
-  late final _dart_clang_remap_getFilenames _clang_remap_getFilenames =
-      _clang_remap_getFilenames_ptr
-          .asFunction<_dart_clang_remap_getFilenames>();
+  late final _clang_remap_getFilenames =
+      _clang_remap_getFilenames_ptr.asFunction<
+          void Function(CXRemapping, int, ffi.Pointer<CXString>,
+              ffi.Pointer<CXString>)>();
 
   /// Dispose the remapping.
   void clang_remap_dispose(
-    ffi.Pointer<ffi.Void> arg0,
+    CXRemapping arg0,
   ) {
     return _clang_remap_dispose(
       arg0,
@@ -6486,8 +6421,8 @@
   late final _clang_remap_dispose_ptr =
       _lookup<ffi.NativeFunction<Native_clang_remap_dispose>>(
           'clang_remap_dispose');
-  late final _dart_clang_remap_dispose _clang_remap_dispose =
-      _clang_remap_dispose_ptr.asFunction<_dart_clang_remap_dispose>();
+  late final _clang_remap_dispose =
+      _clang_remap_dispose_ptr.asFunction<void Function(CXRemapping)>();
 
   /// Find references of a declaration in a specific file.
   ///
@@ -6503,7 +6438,7 @@
   /// \returns one of the CXResult enumerators.
   int clang_findReferencesInFile(
     CXCursor cursor,
-    ffi.Pointer<ffi.Void> file,
+    CXFile file,
     CXCursorAndRangeVisitor visitor,
   ) {
     return _clang_findReferencesInFile(
@@ -6516,9 +6451,8 @@
   late final _clang_findReferencesInFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_findReferencesInFile>>(
           'clang_findReferencesInFile');
-  late final _dart_clang_findReferencesInFile _clang_findReferencesInFile =
-      _clang_findReferencesInFile_ptr
-          .asFunction<_dart_clang_findReferencesInFile>();
+  late final _clang_findReferencesInFile = _clang_findReferencesInFile_ptr
+      .asFunction<int Function(CXCursor, CXFile, CXCursorAndRangeVisitor)>();
 
   /// Find #import/#include directives in a specific file.
   ///
@@ -6531,8 +6465,8 @@
   ///
   /// \returns one of the CXResult enumerators.
   int clang_findIncludesInFile(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit TU,
+    CXFile file,
     CXCursorAndRangeVisitor visitor,
   ) {
     return _clang_findIncludesInFile(
@@ -6545,9 +6479,9 @@
   late final _clang_findIncludesInFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_findIncludesInFile>>(
           'clang_findIncludesInFile');
-  late final _dart_clang_findIncludesInFile _clang_findIncludesInFile =
-      _clang_findIncludesInFile_ptr
-          .asFunction<_dart_clang_findIncludesInFile>();
+  late final _clang_findIncludesInFile =
+      _clang_findIncludesInFile_ptr.asFunction<
+          int Function(CXTranslationUnit, CXFile, CXCursorAndRangeVisitor)>();
 
   int clang_index_isEntityObjCContainerKind(
     int arg0,
@@ -6560,10 +6494,9 @@
   late final _clang_index_isEntityObjCContainerKind_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_isEntityObjCContainerKind>>(
           'clang_index_isEntityObjCContainerKind');
-  late final _dart_clang_index_isEntityObjCContainerKind
-      _clang_index_isEntityObjCContainerKind =
+  late final _clang_index_isEntityObjCContainerKind =
       _clang_index_isEntityObjCContainerKind_ptr
-          .asFunction<_dart_clang_index_isEntityObjCContainerKind>();
+          .asFunction<int Function(int)>();
 
   ffi.Pointer<CXIdxObjCContainerDeclInfo> clang_index_getObjCContainerDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -6576,10 +6509,10 @@
   late final _clang_index_getObjCContainerDeclInfo_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_getObjCContainerDeclInfo>>(
           'clang_index_getObjCContainerDeclInfo');
-  late final _dart_clang_index_getObjCContainerDeclInfo
-      _clang_index_getObjCContainerDeclInfo =
-      _clang_index_getObjCContainerDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCContainerDeclInfo>();
+  late final _clang_index_getObjCContainerDeclInfo =
+      _clang_index_getObjCContainerDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCInterfaceDeclInfo> clang_index_getObjCInterfaceDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -6592,10 +6525,10 @@
   late final _clang_index_getObjCInterfaceDeclInfo_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_getObjCInterfaceDeclInfo>>(
           'clang_index_getObjCInterfaceDeclInfo');
-  late final _dart_clang_index_getObjCInterfaceDeclInfo
-      _clang_index_getObjCInterfaceDeclInfo =
-      _clang_index_getObjCInterfaceDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCInterfaceDeclInfo>();
+  late final _clang_index_getObjCInterfaceDeclInfo =
+      _clang_index_getObjCInterfaceDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCCategoryDeclInfo> clang_index_getObjCCategoryDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -6608,10 +6541,10 @@
   late final _clang_index_getObjCCategoryDeclInfo_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_getObjCCategoryDeclInfo>>(
           'clang_index_getObjCCategoryDeclInfo');
-  late final _dart_clang_index_getObjCCategoryDeclInfo
-      _clang_index_getObjCCategoryDeclInfo =
-      _clang_index_getObjCCategoryDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCCategoryDeclInfo>();
+  late final _clang_index_getObjCCategoryDeclInfo =
+      _clang_index_getObjCCategoryDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCProtocolRefListInfo>
       clang_index_getObjCProtocolRefListInfo(
@@ -6625,10 +6558,10 @@
   late final _clang_index_getObjCProtocolRefListInfo_ptr = _lookup<
           ffi.NativeFunction<Native_clang_index_getObjCProtocolRefListInfo>>(
       'clang_index_getObjCProtocolRefListInfo');
-  late final _dart_clang_index_getObjCProtocolRefListInfo
-      _clang_index_getObjCProtocolRefListInfo =
-      _clang_index_getObjCProtocolRefListInfo_ptr
-          .asFunction<_dart_clang_index_getObjCProtocolRefListInfo>();
+  late final _clang_index_getObjCProtocolRefListInfo =
+      _clang_index_getObjCProtocolRefListInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCPropertyDeclInfo> clang_index_getObjCPropertyDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -6641,10 +6574,10 @@
   late final _clang_index_getObjCPropertyDeclInfo_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_getObjCPropertyDeclInfo>>(
           'clang_index_getObjCPropertyDeclInfo');
-  late final _dart_clang_index_getObjCPropertyDeclInfo
-      _clang_index_getObjCPropertyDeclInfo =
-      _clang_index_getObjCPropertyDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCPropertyDeclInfo>();
+  late final _clang_index_getObjCPropertyDeclInfo =
+      _clang_index_getObjCPropertyDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxIBOutletCollectionAttrInfo>
       clang_index_getIBOutletCollectionAttrInfo(
@@ -6658,10 +6591,10 @@
   late final _clang_index_getIBOutletCollectionAttrInfo_ptr = _lookup<
           ffi.NativeFunction<Native_clang_index_getIBOutletCollectionAttrInfo>>(
       'clang_index_getIBOutletCollectionAttrInfo');
-  late final _dart_clang_index_getIBOutletCollectionAttrInfo
-      _clang_index_getIBOutletCollectionAttrInfo =
-      _clang_index_getIBOutletCollectionAttrInfo_ptr
-          .asFunction<_dart_clang_index_getIBOutletCollectionAttrInfo>();
+  late final _clang_index_getIBOutletCollectionAttrInfo =
+      _clang_index_getIBOutletCollectionAttrInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
+              ffi.Pointer<CXIdxAttrInfo>)>();
 
   ffi.Pointer<CXIdxCXXClassDeclInfo> clang_index_getCXXClassDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -6674,13 +6607,14 @@
   late final _clang_index_getCXXClassDeclInfo_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_getCXXClassDeclInfo>>(
           'clang_index_getCXXClassDeclInfo');
-  late final _dart_clang_index_getCXXClassDeclInfo
-      _clang_index_getCXXClassDeclInfo = _clang_index_getCXXClassDeclInfo_ptr
-          .asFunction<_dart_clang_index_getCXXClassDeclInfo>();
+  late final _clang_index_getCXXClassDeclInfo =
+      _clang_index_getCXXClassDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   /// For retrieving a custom CXIdxClientContainer attached to a
   /// container.
-  ffi.Pointer<ffi.Void> clang_index_getClientContainer(
+  CXIdxClientContainer clang_index_getClientContainer(
     ffi.Pointer<CXIdxContainerInfo> arg0,
   ) {
     return _clang_index_getClientContainer(
@@ -6691,15 +6625,15 @@
   late final _clang_index_getClientContainer_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_getClientContainer>>(
           'clang_index_getClientContainer');
-  late final _dart_clang_index_getClientContainer
-      _clang_index_getClientContainer = _clang_index_getClientContainer_ptr
-          .asFunction<_dart_clang_index_getClientContainer>();
+  late final _clang_index_getClientContainer =
+      _clang_index_getClientContainer_ptr.asFunction<
+          CXIdxClientContainer Function(ffi.Pointer<CXIdxContainerInfo>)>();
 
   /// For setting a custom CXIdxClientContainer attached to a
   /// container.
   void clang_index_setClientContainer(
     ffi.Pointer<CXIdxContainerInfo> arg0,
-    ffi.Pointer<ffi.Void> arg1,
+    CXIdxClientContainer arg1,
   ) {
     return _clang_index_setClientContainer(
       arg0,
@@ -6710,12 +6644,13 @@
   late final _clang_index_setClientContainer_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_setClientContainer>>(
           'clang_index_setClientContainer');
-  late final _dart_clang_index_setClientContainer
-      _clang_index_setClientContainer = _clang_index_setClientContainer_ptr
-          .asFunction<_dart_clang_index_setClientContainer>();
+  late final _clang_index_setClientContainer =
+      _clang_index_setClientContainer_ptr.asFunction<
+          void Function(
+              ffi.Pointer<CXIdxContainerInfo>, CXIdxClientContainer)>();
 
   /// For retrieving a custom CXIdxClientEntity attached to an entity.
-  ffi.Pointer<ffi.Void> clang_index_getClientEntity(
+  CXIdxClientEntity clang_index_getClientEntity(
     ffi.Pointer<CXIdxEntityInfo> arg0,
   ) {
     return _clang_index_getClientEntity(
@@ -6726,14 +6661,13 @@
   late final _clang_index_getClientEntity_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_getClientEntity>>(
           'clang_index_getClientEntity');
-  late final _dart_clang_index_getClientEntity _clang_index_getClientEntity =
-      _clang_index_getClientEntity_ptr
-          .asFunction<_dart_clang_index_getClientEntity>();
+  late final _clang_index_getClientEntity = _clang_index_getClientEntity_ptr
+      .asFunction<CXIdxClientEntity Function(ffi.Pointer<CXIdxEntityInfo>)>();
 
   /// For setting a custom CXIdxClientEntity attached to an entity.
   void clang_index_setClientEntity(
     ffi.Pointer<CXIdxEntityInfo> arg0,
-    ffi.Pointer<ffi.Void> arg1,
+    CXIdxClientEntity arg1,
   ) {
     return _clang_index_setClientEntity(
       arg0,
@@ -6744,16 +6678,16 @@
   late final _clang_index_setClientEntity_ptr =
       _lookup<ffi.NativeFunction<Native_clang_index_setClientEntity>>(
           'clang_index_setClientEntity');
-  late final _dart_clang_index_setClientEntity _clang_index_setClientEntity =
-      _clang_index_setClientEntity_ptr
-          .asFunction<_dart_clang_index_setClientEntity>();
+  late final _clang_index_setClientEntity =
+      _clang_index_setClientEntity_ptr.asFunction<
+          void Function(ffi.Pointer<CXIdxEntityInfo>, CXIdxClientEntity)>();
 
   /// An indexing action/session, to be applied to one or multiple
   /// translation units.
   ///
   /// \param CIdx The index object with which the index action will be associated.
-  ffi.Pointer<ffi.Void> clang_IndexAction_create(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXIndexAction clang_IndexAction_create(
+    CXIndex CIdx,
   ) {
     return _clang_IndexAction_create(
       CIdx,
@@ -6763,16 +6697,15 @@
   late final _clang_IndexAction_create_ptr =
       _lookup<ffi.NativeFunction<Native_clang_IndexAction_create>>(
           'clang_IndexAction_create');
-  late final _dart_clang_IndexAction_create _clang_IndexAction_create =
-      _clang_IndexAction_create_ptr
-          .asFunction<_dart_clang_IndexAction_create>();
+  late final _clang_IndexAction_create = _clang_IndexAction_create_ptr
+      .asFunction<CXIndexAction Function(CXIndex)>();
 
   /// Destroy the given index action.
   ///
   /// The index action must not be destroyed until all of the translation units
   /// created within that index action have been destroyed.
   void clang_IndexAction_dispose(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndexAction arg0,
   ) {
     return _clang_IndexAction_dispose(
       arg0,
@@ -6782,9 +6715,8 @@
   late final _clang_IndexAction_dispose_ptr =
       _lookup<ffi.NativeFunction<Native_clang_IndexAction_dispose>>(
           'clang_IndexAction_dispose');
-  late final _dart_clang_IndexAction_dispose _clang_IndexAction_dispose =
-      _clang_IndexAction_dispose_ptr
-          .asFunction<_dart_clang_IndexAction_dispose>();
+  late final _clang_IndexAction_dispose =
+      _clang_IndexAction_dispose_ptr.asFunction<void Function(CXIndexAction)>();
 
   /// Index the given source file and the translation unit corresponding
   /// to that file via callbacks implemented through #IndexerCallbacks.
@@ -6810,8 +6742,8 @@
   ///
   /// The rest of the parameters are the same as #clang_parseTranslationUnit.
   int clang_indexSourceFile(
-    ffi.Pointer<ffi.Void> arg0,
-    ffi.Pointer<ffi.Void> client_data,
+    CXIndexAction arg0,
+    CXClientData client_data,
     ffi.Pointer<IndexerCallbacks> index_callbacks,
     int index_callbacks_size,
     int index_options,
@@ -6820,7 +6752,7 @@
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
     int TU_options,
   ) {
     return _clang_indexSourceFile(
@@ -6842,15 +6774,27 @@
   late final _clang_indexSourceFile_ptr =
       _lookup<ffi.NativeFunction<Native_clang_indexSourceFile>>(
           'clang_indexSourceFile');
-  late final _dart_clang_indexSourceFile _clang_indexSourceFile =
-      _clang_indexSourceFile_ptr.asFunction<_dart_clang_indexSourceFile>();
+  late final _clang_indexSourceFile = _clang_indexSourceFile_ptr.asFunction<
+      int Function(
+          CXIndexAction,
+          CXClientData,
+          ffi.Pointer<IndexerCallbacks>,
+          int,
+          int,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+          int,
+          ffi.Pointer<CXUnsavedFile>,
+          int,
+          ffi.Pointer<CXTranslationUnit>,
+          int)>();
 
   /// Same as clang_indexSourceFile but requires a full command line
   /// for \c command_line_args including argv[0]. This is useful if the standard
   /// library paths are relative to the binary.
   int clang_indexSourceFileFullArgv(
-    ffi.Pointer<ffi.Void> arg0,
-    ffi.Pointer<ffi.Void> client_data,
+    CXIndexAction arg0,
+    CXClientData client_data,
     ffi.Pointer<IndexerCallbacks> index_callbacks,
     int index_callbacks_size,
     int index_options,
@@ -6859,7 +6803,7 @@
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
     int TU_options,
   ) {
     return _clang_indexSourceFileFullArgv(
@@ -6881,9 +6825,21 @@
   late final _clang_indexSourceFileFullArgv_ptr =
       _lookup<ffi.NativeFunction<Native_clang_indexSourceFileFullArgv>>(
           'clang_indexSourceFileFullArgv');
-  late final _dart_clang_indexSourceFileFullArgv
-      _clang_indexSourceFileFullArgv = _clang_indexSourceFileFullArgv_ptr
-          .asFunction<_dart_clang_indexSourceFileFullArgv>();
+  late final _clang_indexSourceFileFullArgv =
+      _clang_indexSourceFileFullArgv_ptr.asFunction<
+          int Function(
+              CXIndexAction,
+              CXClientData,
+              ffi.Pointer<IndexerCallbacks>,
+              int,
+              int,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              ffi.Pointer<CXTranslationUnit>,
+              int)>();
 
   /// Index the given translation unit via callbacks implemented through
   /// #IndexerCallbacks.
@@ -6900,12 +6856,12 @@
   /// \returns If there is a failure from which there is no recovery, returns
   /// non-zero, otherwise returns 0.
   int clang_indexTranslationUnit(
-    ffi.Pointer<ffi.Void> arg0,
-    ffi.Pointer<ffi.Void> client_data,
+    CXIndexAction arg0,
+    CXClientData client_data,
     ffi.Pointer<IndexerCallbacks> index_callbacks,
     int index_callbacks_size,
     int index_options,
-    ffi.Pointer<CXTranslationUnitImpl> arg5,
+    CXTranslationUnit arg5,
   ) {
     return _clang_indexTranslationUnit(
       arg0,
@@ -6920,9 +6876,10 @@
   late final _clang_indexTranslationUnit_ptr =
       _lookup<ffi.NativeFunction<Native_clang_indexTranslationUnit>>(
           'clang_indexTranslationUnit');
-  late final _dart_clang_indexTranslationUnit _clang_indexTranslationUnit =
-      _clang_indexTranslationUnit_ptr
-          .asFunction<_dart_clang_indexTranslationUnit>();
+  late final _clang_indexTranslationUnit =
+      _clang_indexTranslationUnit_ptr.asFunction<
+          int Function(CXIndexAction, CXClientData,
+              ffi.Pointer<IndexerCallbacks>, int, int, CXTranslationUnit)>();
 
   /// Retrieve the CXIdxFile, file, line, column, and offset represented by
   /// the given CXIdxLoc.
@@ -6932,8 +6889,8 @@
   /// retrieves the location of the argument.
   void clang_indexLoc_getFileLocation(
     CXIdxLoc loc,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> indexFile,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXIdxClientFile> indexFile,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -6951,9 +6908,15 @@
   late final _clang_indexLoc_getFileLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_indexLoc_getFileLocation>>(
           'clang_indexLoc_getFileLocation');
-  late final _dart_clang_indexLoc_getFileLocation
-      _clang_indexLoc_getFileLocation = _clang_indexLoc_getFileLocation_ptr
-          .asFunction<_dart_clang_indexLoc_getFileLocation>();
+  late final _clang_indexLoc_getFileLocation =
+      _clang_indexLoc_getFileLocation_ptr.asFunction<
+          void Function(
+              CXIdxLoc,
+              ffi.Pointer<CXIdxClientFile>,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the CXSourceLocation represented by the given CXIdxLoc.
   CXSourceLocation clang_indexLoc_getCXSourceLocation(
@@ -6967,10 +6930,9 @@
   late final _clang_indexLoc_getCXSourceLocation_ptr =
       _lookup<ffi.NativeFunction<Native_clang_indexLoc_getCXSourceLocation>>(
           'clang_indexLoc_getCXSourceLocation');
-  late final _dart_clang_indexLoc_getCXSourceLocation
-      _clang_indexLoc_getCXSourceLocation =
+  late final _clang_indexLoc_getCXSourceLocation =
       _clang_indexLoc_getCXSourceLocation_ptr
-          .asFunction<_dart_clang_indexLoc_getCXSourceLocation>();
+          .asFunction<CXSourceLocation Function(CXIdxLoc)>();
 
   /// Visit the fields of a particular type.
   ///
@@ -6991,8 +6953,8 @@
   /// prematurely by the visitor returning \c CXFieldVisit_Break.
   int clang_Type_visitFields(
     CXType T,
-    ffi.Pointer<ffi.NativeFunction<CXFieldVisitor>> visitor,
-    ffi.Pointer<ffi.Void> client_data,
+    CXFieldVisitor visitor,
+    CXClientData client_data,
   ) {
     return _clang_Type_visitFields(
       T,
@@ -7004,8 +6966,8 @@
   late final _clang_Type_visitFields_ptr =
       _lookup<ffi.NativeFunction<Native_clang_Type_visitFields>>(
           'clang_Type_visitFields');
-  late final _dart_clang_Type_visitFields _clang_Type_visitFields =
-      _clang_Type_visitFields_ptr.asFunction<_dart_clang_Type_visitFields>();
+  late final _clang_Type_visitFields = _clang_Type_visitFields_ptr
+      .asFunction<int Function(CXType, CXFieldVisitor, CXClientData)>();
 
   late final addresses = _SymbolAddresses(this);
 }
@@ -7859,6 +7821,12 @@
   external int Count;
 }
 
+typedef Native_clang_getCString = ffi.Pointer<ffi.Int8> Function(
+    CXString string);
+typedef Native_clang_disposeString = ffi.Void Function(CXString string);
+typedef Native_clang_disposeStringSet = ffi.Void Function(
+    ffi.Pointer<CXStringSet> set_1);
+
 class CXTargetInfoImpl extends ffi.Opaque {}
 
 class CXTranslationUnitImpl extends ffi.Opaque {}
@@ -7902,6 +7870,14 @@
   external int Subminor;
 }
 
+typedef Native_clang_createIndex = CXIndex Function(
+    ffi.Int32 excludeDeclarationsFromPCH, ffi.Int32 displayDiagnostics);
+
+/// An "index" that consists of a set of translation units that would
+/// typically be linked together into an executable or library.
+typedef CXIndex = ffi.Pointer<ffi.Void>;
+typedef Native_clang_disposeIndex = ffi.Void Function(CXIndex index);
+
 abstract class CXGlobalOptFlags {
   /// Used to indicate that no special CXIndex options are needed.
   static const int CXGlobalOpt_None = 0;
@@ -7925,6 +7901,18 @@
   static const int CXGlobalOpt_ThreadBackgroundPriorityForAll = 3;
 }
 
+typedef Native_clang_CXIndex_setGlobalOptions = ffi.Void Function(
+    CXIndex arg0, ffi.Uint32 options);
+typedef Native_clang_CXIndex_getGlobalOptions = ffi.Uint32 Function(
+    CXIndex arg0);
+typedef Native_clang_CXIndex_setInvocationEmissionPathOption = ffi.Void
+    Function(CXIndex arg0, ffi.Pointer<ffi.Int8> Path);
+typedef Native_clang_getFileName = CXString Function(CXFile SFile);
+
+/// A particular source file that is part of a translation unit.
+typedef CXFile = ffi.Pointer<ffi.Void>;
+typedef Native_clang_getFileTime = ffi.Int64 Function(CXFile SFile);
+
 /// Uniquely identifies a CXFile, that refers to the same underlying file,
 /// across an indexing session.
 class CXFileUniqueID extends ffi.Struct {
@@ -7932,6 +7920,21 @@
   external ffi.Array<ffi.Uint64> data;
 }
 
+typedef Native_clang_getFileUniqueID = ffi.Int32 Function(
+    CXFile file, ffi.Pointer<CXFileUniqueID> outID);
+typedef Native_clang_isFileMultipleIncludeGuarded = ffi.Uint32 Function(
+    CXTranslationUnit tu, CXFile file);
+
+/// A single translation unit, which resides in an index.
+typedef CXTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>;
+typedef Native_clang_getFile = CXFile Function(
+    CXTranslationUnit tu, ffi.Pointer<ffi.Int8> file_name);
+typedef Native_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
+    CXTranslationUnit tu, CXFile file, ffi.Pointer<ffi.IntPtr> size);
+typedef Native_clang_File_isEqual = ffi.Int32 Function(
+    CXFile file1, CXFile file2);
+typedef Native_clang_File_tryGetRealPathName = CXString Function(CXFile file);
+
 /// Identifies a specific source location within a translation
 /// unit.
 ///
@@ -7960,6 +7963,57 @@
   external int end_int_data;
 }
 
+typedef Native_clang_getNullLocation = CXSourceLocation Function();
+typedef Native_clang_equalLocations = ffi.Uint32 Function(
+    CXSourceLocation loc1, CXSourceLocation loc2);
+typedef Native_clang_getLocation = CXSourceLocation Function(
+    CXTranslationUnit tu, CXFile file, ffi.Uint32 line, ffi.Uint32 column);
+typedef Native_clang_getLocationForOffset = CXSourceLocation Function(
+    CXTranslationUnit tu, CXFile file, ffi.Uint32 offset);
+typedef Native_clang_Location_isInSystemHeader = ffi.Int32 Function(
+    CXSourceLocation location);
+typedef Native_clang_Location_isFromMainFile = ffi.Int32 Function(
+    CXSourceLocation location);
+typedef Native_clang_getNullRange = CXSourceRange Function();
+typedef Native_clang_getRange = CXSourceRange Function(
+    CXSourceLocation begin, CXSourceLocation end);
+typedef Native_clang_equalRanges = ffi.Uint32 Function(
+    CXSourceRange range1, CXSourceRange range2);
+typedef Native_clang_Range_isNull = ffi.Int32 Function(CXSourceRange range);
+typedef Native_clang_getExpansionLocation = ffi.Void Function(
+    CXSourceLocation location,
+    ffi.Pointer<CXFile> file,
+    ffi.Pointer<ffi.Uint32> line,
+    ffi.Pointer<ffi.Uint32> column,
+    ffi.Pointer<ffi.Uint32> offset);
+typedef Native_clang_getPresumedLocation = ffi.Void Function(
+    CXSourceLocation location,
+    ffi.Pointer<CXString> filename,
+    ffi.Pointer<ffi.Uint32> line,
+    ffi.Pointer<ffi.Uint32> column);
+typedef Native_clang_getInstantiationLocation = ffi.Void Function(
+    CXSourceLocation location,
+    ffi.Pointer<CXFile> file,
+    ffi.Pointer<ffi.Uint32> line,
+    ffi.Pointer<ffi.Uint32> column,
+    ffi.Pointer<ffi.Uint32> offset);
+typedef Native_clang_getSpellingLocation = ffi.Void Function(
+    CXSourceLocation location,
+    ffi.Pointer<CXFile> file,
+    ffi.Pointer<ffi.Uint32> line,
+    ffi.Pointer<ffi.Uint32> column,
+    ffi.Pointer<ffi.Uint32> offset);
+typedef Native_clang_getFileLocation = ffi.Void Function(
+    CXSourceLocation location,
+    ffi.Pointer<CXFile> file,
+    ffi.Pointer<ffi.Uint32> line,
+    ffi.Pointer<ffi.Uint32> column,
+    ffi.Pointer<ffi.Uint32> offset);
+typedef Native_clang_getRangeStart = CXSourceLocation Function(
+    CXSourceRange range);
+typedef Native_clang_getRangeEnd = CXSourceLocation Function(
+    CXSourceRange range);
+
 /// Identifies an array of ranges.
 class CXSourceRangeList extends ffi.Struct {
   /// The number of ranges in the \c ranges array.
@@ -7970,6 +8024,218 @@
   external ffi.Pointer<CXSourceRange> ranges;
 }
 
+typedef Native_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
+    CXTranslationUnit tu, CXFile file);
+typedef Native_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList>
+    Function(CXTranslationUnit tu);
+typedef Native_clang_disposeSourceRangeList = ffi.Void Function(
+    ffi.Pointer<CXSourceRangeList> ranges);
+typedef Native_clang_getNumDiagnosticsInSet = ffi.Uint32 Function(
+    CXDiagnosticSet Diags);
+
+/// A group of CXDiagnostics.
+typedef CXDiagnosticSet = ffi.Pointer<ffi.Void>;
+typedef Native_clang_getDiagnosticInSet = CXDiagnostic Function(
+    CXDiagnosticSet Diags, ffi.Uint32 Index);
+
+/// A single diagnostic, containing the diagnostic's severity,
+/// location, text, source ranges, and fix-it hints.
+typedef CXDiagnostic = ffi.Pointer<ffi.Void>;
+typedef Native_clang_loadDiagnostics = CXDiagnosticSet Function(
+    ffi.Pointer<ffi.Int8> file,
+    ffi.Pointer<ffi.Int32> error,
+    ffi.Pointer<CXString> errorString);
+
+/// Describes the kind of error that occurred (if any) in a call to
+/// \c clang_loadDiagnostics.
+abstract class CXLoadDiag_Error {
+  /// Indicates that no error occurred.
+  static const int CXLoadDiag_None = 0;
+
+  /// Indicates that an unknown error occurred while attempting to
+  /// deserialize diagnostics.
+  static const int CXLoadDiag_Unknown = 1;
+
+  /// Indicates that the file containing the serialized diagnostics
+  /// could not be opened.
+  static const int CXLoadDiag_CannotLoad = 2;
+
+  /// Indicates that the serialized diagnostics file is invalid or
+  /// corrupt.
+  static const int CXLoadDiag_InvalidFile = 3;
+}
+
+typedef Native_clang_disposeDiagnosticSet = ffi.Void Function(
+    CXDiagnosticSet Diags);
+typedef Native_clang_getChildDiagnostics = CXDiagnosticSet Function(
+    CXDiagnostic D);
+typedef Native_clang_getNumDiagnostics = ffi.Uint32 Function(
+    CXTranslationUnit Unit);
+typedef Native_clang_getDiagnostic = CXDiagnostic Function(
+    CXTranslationUnit Unit, ffi.Uint32 Index);
+typedef Native_clang_getDiagnosticSetFromTU = CXDiagnosticSet Function(
+    CXTranslationUnit Unit);
+typedef Native_clang_disposeDiagnostic = ffi.Void Function(
+    CXDiagnostic Diagnostic);
+typedef Native_clang_formatDiagnostic = CXString Function(
+    CXDiagnostic Diagnostic, ffi.Uint32 Options);
+typedef Native_clang_defaultDiagnosticDisplayOptions = ffi.Uint32 Function();
+typedef Native_clang_getDiagnosticSeverity = ffi.Int32 Function(
+    CXDiagnostic arg0);
+
+/// Describes the severity of a particular diagnostic.
+abstract class CXDiagnosticSeverity {
+  /// A diagnostic that has been suppressed, e.g., by a command-line
+  /// option.
+  static const int CXDiagnostic_Ignored = 0;
+
+  /// This diagnostic is a note that should be attached to the
+  /// previous (non-note) diagnostic.
+  static const int CXDiagnostic_Note = 1;
+
+  /// This diagnostic indicates suspicious code that may not be
+  /// wrong.
+  static const int CXDiagnostic_Warning = 2;
+
+  /// This diagnostic indicates that the code is ill-formed.
+  static const int CXDiagnostic_Error = 3;
+
+  /// This diagnostic indicates that the code is ill-formed such
+  /// that future parser recovery is unlikely to produce useful
+  /// results.
+  static const int CXDiagnostic_Fatal = 4;
+}
+
+typedef Native_clang_getDiagnosticLocation = CXSourceLocation Function(
+    CXDiagnostic arg0);
+typedef Native_clang_getDiagnosticSpelling = CXString Function(
+    CXDiagnostic arg0);
+typedef Native_clang_getDiagnosticOption = CXString Function(
+    CXDiagnostic Diag, ffi.Pointer<CXString> Disable);
+typedef Native_clang_getDiagnosticCategory = ffi.Uint32 Function(
+    CXDiagnostic arg0);
+typedef Native_clang_getDiagnosticCategoryName = CXString Function(
+    ffi.Uint32 Category);
+typedef Native_clang_getDiagnosticCategoryText = CXString Function(
+    CXDiagnostic arg0);
+typedef Native_clang_getDiagnosticNumRanges = ffi.Uint32 Function(
+    CXDiagnostic arg0);
+typedef Native_clang_getDiagnosticRange = CXSourceRange Function(
+    CXDiagnostic Diagnostic, ffi.Uint32 Range);
+typedef Native_clang_getDiagnosticNumFixIts = ffi.Uint32 Function(
+    CXDiagnostic Diagnostic);
+typedef Native_clang_getDiagnosticFixIt = CXString Function(
+    CXDiagnostic Diagnostic,
+    ffi.Uint32 FixIt,
+    ffi.Pointer<CXSourceRange> ReplacementRange);
+typedef Native_clang_getTranslationUnitSpelling = CXString Function(
+    CXTranslationUnit CTUnit);
+typedef Native_clang_createTranslationUnitFromSourceFile
+    = CXTranslationUnit Function(
+        CXIndex CIdx,
+        ffi.Pointer<ffi.Int8> source_filename,
+        ffi.Int32 num_clang_command_line_args,
+        ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
+        ffi.Uint32 num_unsaved_files,
+        ffi.Pointer<CXUnsavedFile> unsaved_files);
+typedef Native_clang_createTranslationUnit = CXTranslationUnit Function(
+    CXIndex CIdx, ffi.Pointer<ffi.Int8> ast_filename);
+typedef Native_clang_createTranslationUnit2 = ffi.Int32 Function(CXIndex CIdx,
+    ffi.Pointer<ffi.Int8> ast_filename, ffi.Pointer<CXTranslationUnit> out_TU);
+
+/// Error codes returned by libclang routines.
+///
+/// Zero (\c CXError_Success) is the only error code indicating success.  Other
+/// error codes, including not yet assigned non-zero values, indicate errors.
+abstract class CXErrorCode {
+  /// No error.
+  static const int CXError_Success = 0;
+
+  /// A generic error code, no further details are available.
+  ///
+  /// Errors of this kind can get their own specific error codes in future
+  /// libclang versions.
+  static const int CXError_Failure = 1;
+
+  /// libclang crashed while performing the requested operation.
+  static const int CXError_Crashed = 2;
+
+  /// The function detected that the arguments violate the function
+  /// contract.
+  static const int CXError_InvalidArguments = 3;
+
+  /// An AST deserialization error has occurred.
+  static const int CXError_ASTReadError = 4;
+}
+
+typedef Native_clang_defaultEditingTranslationUnitOptions = ffi.Uint32
+    Function();
+typedef Native_clang_parseTranslationUnit = CXTranslationUnit Function(
+    CXIndex CIdx,
+    ffi.Pointer<ffi.Int8> source_filename,
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+    ffi.Int32 num_command_line_args,
+    ffi.Pointer<CXUnsavedFile> unsaved_files,
+    ffi.Uint32 num_unsaved_files,
+    ffi.Uint32 options);
+typedef Native_clang_parseTranslationUnit2 = ffi.Int32 Function(
+    CXIndex CIdx,
+    ffi.Pointer<ffi.Int8> source_filename,
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+    ffi.Int32 num_command_line_args,
+    ffi.Pointer<CXUnsavedFile> unsaved_files,
+    ffi.Uint32 num_unsaved_files,
+    ffi.Uint32 options,
+    ffi.Pointer<CXTranslationUnit> out_TU);
+typedef Native_clang_parseTranslationUnit2FullArgv = ffi.Int32 Function(
+    CXIndex CIdx,
+    ffi.Pointer<ffi.Int8> source_filename,
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+    ffi.Int32 num_command_line_args,
+    ffi.Pointer<CXUnsavedFile> unsaved_files,
+    ffi.Uint32 num_unsaved_files,
+    ffi.Uint32 options,
+    ffi.Pointer<CXTranslationUnit> out_TU);
+typedef Native_clang_defaultSaveOptions = ffi.Uint32 Function(
+    CXTranslationUnit TU);
+typedef Native_clang_saveTranslationUnit = ffi.Int32 Function(
+    CXTranslationUnit TU, ffi.Pointer<ffi.Int8> FileName, ffi.Uint32 options);
+typedef Native_clang_suspendTranslationUnit = ffi.Uint32 Function(
+    CXTranslationUnit arg0);
+typedef Native_clang_disposeTranslationUnit = ffi.Void Function(
+    CXTranslationUnit arg0);
+typedef Native_clang_defaultReparseOptions = ffi.Uint32 Function(
+    CXTranslationUnit TU);
+typedef Native_clang_reparseTranslationUnit = ffi.Int32 Function(
+    CXTranslationUnit TU,
+    ffi.Uint32 num_unsaved_files,
+    ffi.Pointer<CXUnsavedFile> unsaved_files,
+    ffi.Uint32 options);
+typedef Native_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
+    ffi.Int32 kind);
+
+/// Categorizes how memory is being used by a translation unit.
+abstract class CXTUResourceUsageKind {
+  static const int CXTUResourceUsage_AST = 1;
+  static const int CXTUResourceUsage_Identifiers = 2;
+  static const int CXTUResourceUsage_Selectors = 3;
+  static const int CXTUResourceUsage_GlobalCompletionResults = 4;
+  static const int CXTUResourceUsage_SourceManagerContentCache = 5;
+  static const int CXTUResourceUsage_AST_SideTables = 6;
+  static const int CXTUResourceUsage_SourceManager_Membuffer_Malloc = 7;
+  static const int CXTUResourceUsage_SourceManager_Membuffer_MMap = 8;
+  static const int CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9;
+  static const int CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10;
+  static const int CXTUResourceUsage_Preprocessor = 11;
+  static const int CXTUResourceUsage_PreprocessingRecord = 12;
+  static const int CXTUResourceUsage_SourceManager_DataStructures = 13;
+  static const int CXTUResourceUsage_Preprocessor_HeaderSearch = 14;
+  static const int CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = 1;
+  static const int CXTUResourceUsage_MEMORY_IN_BYTES_END = 14;
+  static const int CXTUResourceUsage_First = 1;
+  static const int CXTUResourceUsage_Last = 14;
+}
+
 class CXTUResourceUsageEntry extends ffi.Struct {
   @ffi.Int32()
   external int kind;
@@ -7988,6 +8254,22 @@
   external ffi.Pointer<CXTUResourceUsageEntry> entries;
 }
 
+typedef Native_clang_getCXTUResourceUsage = CXTUResourceUsage Function(
+    CXTranslationUnit TU);
+typedef Native_clang_disposeCXTUResourceUsage = ffi.Void Function(
+    CXTUResourceUsage usage);
+typedef Native_clang_getTranslationUnitTargetInfo = CXTargetInfo Function(
+    CXTranslationUnit CTUnit);
+
+/// An opaque type representing target information for a given translation
+/// unit.
+typedef CXTargetInfo = ffi.Pointer<CXTargetInfoImpl>;
+typedef Native_clang_TargetInfo_dispose = ffi.Void Function(CXTargetInfo Info);
+typedef Native_clang_TargetInfo_getTriple = CXString Function(
+    CXTargetInfo Info);
+typedef Native_clang_TargetInfo_getPointerWidth = ffi.Int32 Function(
+    CXTargetInfo Info);
+
 /// A cursor representing some element in the abstract syntax tree for
 /// a translation unit.
 ///
@@ -8015,6 +8297,873 @@
   external ffi.Array<ffi.Pointer<ffi.Void>> data;
 }
 
+/// Describes the kind of entity that a cursor refers to.
+abstract class CXCursorKind {
+  /// A declaration whose specific kind is not exposed via this
+  /// interface.
+  ///
+  /// Unexposed declarations have the same operations as any other kind
+  /// of declaration; one can extract their location information,
+  /// spelling, find their definitions, etc. However, the specific kind
+  /// of the declaration is not reported.
+  static const int CXCursor_UnexposedDecl = 1;
+
+  /// A C or C++ struct.
+  static const int CXCursor_StructDecl = 2;
+
+  /// A C or C++ union.
+  static const int CXCursor_UnionDecl = 3;
+
+  /// A C++ class.
+  static const int CXCursor_ClassDecl = 4;
+
+  /// An enumeration.
+  static const int CXCursor_EnumDecl = 5;
+
+  /// A field (in C) or non-static data member (in C++) in a
+  /// struct, union, or C++ class.
+  static const int CXCursor_FieldDecl = 6;
+
+  /// An enumerator constant.
+  static const int CXCursor_EnumConstantDecl = 7;
+
+  /// A function.
+  static const int CXCursor_FunctionDecl = 8;
+
+  /// A variable.
+  static const int CXCursor_VarDecl = 9;
+
+  /// A function or method parameter.
+  static const int CXCursor_ParmDecl = 10;
+
+  /// An Objective-C \@interface.
+  static const int CXCursor_ObjCInterfaceDecl = 11;
+
+  /// An Objective-C \@interface for a category.
+  static const int CXCursor_ObjCCategoryDecl = 12;
+
+  /// An Objective-C \@protocol declaration.
+  static const int CXCursor_ObjCProtocolDecl = 13;
+
+  /// An Objective-C \@property declaration.
+  static const int CXCursor_ObjCPropertyDecl = 14;
+
+  /// An Objective-C instance variable.
+  static const int CXCursor_ObjCIvarDecl = 15;
+
+  /// An Objective-C instance method.
+  static const int CXCursor_ObjCInstanceMethodDecl = 16;
+
+  /// An Objective-C class method.
+  static const int CXCursor_ObjCClassMethodDecl = 17;
+
+  /// An Objective-C \@implementation.
+  static const int CXCursor_ObjCImplementationDecl = 18;
+
+  /// An Objective-C \@implementation for a category.
+  static const int CXCursor_ObjCCategoryImplDecl = 19;
+
+  /// A typedef.
+  static const int CXCursor_TypedefDecl = 20;
+
+  /// A C++ class method.
+  static const int CXCursor_CXXMethod = 21;
+
+  /// A C++ namespace.
+  static const int CXCursor_Namespace = 22;
+
+  /// A linkage specification, e.g. 'extern "C"'.
+  static const int CXCursor_LinkageSpec = 23;
+
+  /// A C++ constructor.
+  static const int CXCursor_Constructor = 24;
+
+  /// A C++ destructor.
+  static const int CXCursor_Destructor = 25;
+
+  /// A C++ conversion function.
+  static const int CXCursor_ConversionFunction = 26;
+
+  /// A C++ template type parameter.
+  static const int CXCursor_TemplateTypeParameter = 27;
+
+  /// A C++ non-type template parameter.
+  static const int CXCursor_NonTypeTemplateParameter = 28;
+
+  /// A C++ template template parameter.
+  static const int CXCursor_TemplateTemplateParameter = 29;
+
+  /// A C++ function template.
+  static const int CXCursor_FunctionTemplate = 30;
+
+  /// A C++ class template.
+  static const int CXCursor_ClassTemplate = 31;
+
+  /// A C++ class template partial specialization.
+  static const int CXCursor_ClassTemplatePartialSpecialization = 32;
+
+  /// A C++ namespace alias declaration.
+  static const int CXCursor_NamespaceAlias = 33;
+
+  /// A C++ using directive.
+  static const int CXCursor_UsingDirective = 34;
+
+  /// A C++ using declaration.
+  static const int CXCursor_UsingDeclaration = 35;
+
+  /// A C++ alias declaration
+  static const int CXCursor_TypeAliasDecl = 36;
+
+  /// An Objective-C \@synthesize definition.
+  static const int CXCursor_ObjCSynthesizeDecl = 37;
+
+  /// An Objective-C \@dynamic definition.
+  static const int CXCursor_ObjCDynamicDecl = 38;
+
+  /// An access specifier.
+  static const int CXCursor_CXXAccessSpecifier = 39;
+  static const int CXCursor_FirstDecl = 1;
+  static const int CXCursor_LastDecl = 39;
+  static const int CXCursor_FirstRef = 40;
+  static const int CXCursor_ObjCSuperClassRef = 40;
+  static const int CXCursor_ObjCProtocolRef = 41;
+  static const int CXCursor_ObjCClassRef = 42;
+
+  /// A reference to a type declaration.
+  ///
+  /// A type reference occurs anywhere where a type is named but not
+  /// declared. For example, given:
+  ///
+  /// \code
+  /// typedef unsigned size_type;
+  /// size_type size;
+  /// \endcode
+  ///
+  /// The typedef is a declaration of size_type (CXCursor_TypedefDecl),
+  /// while the type of the variable "size" is referenced. The cursor
+  /// referenced by the type of size is the typedef for size_type.
+  static const int CXCursor_TypeRef = 43;
+  static const int CXCursor_CXXBaseSpecifier = 44;
+
+  /// A reference to a class template, function template, template
+  /// template parameter, or class template partial specialization.
+  static const int CXCursor_TemplateRef = 45;
+
+  /// A reference to a namespace or namespace alias.
+  static const int CXCursor_NamespaceRef = 46;
+
+  /// A reference to a member of a struct, union, or class that occurs in
+  /// some non-expression context, e.g., a designated initializer.
+  static const int CXCursor_MemberRef = 47;
+
+  /// A reference to a labeled statement.
+  ///
+  /// This cursor kind is used to describe the jump to "start_over" in the
+  /// goto statement in the following example:
+  ///
+  /// \code
+  /// start_over:
+  /// ++counter;
+  ///
+  /// goto start_over;
+  /// \endcode
+  ///
+  /// A label reference cursor refers to a label statement.
+  static const int CXCursor_LabelRef = 48;
+
+  /// A reference to a set of overloaded functions or function templates
+  /// that has not yet been resolved to a specific function or function template.
+  ///
+  /// An overloaded declaration reference cursor occurs in C++ templates where
+  /// a dependent name refers to a function. For example:
+  ///
+  /// \code
+  /// template<typename T> void swap(T&, T&);
+  ///
+  /// struct X { ... };
+  /// void swap(X&, X&);
+  ///
+  /// template<typename T>
+  /// void reverse(T* first, T* last) {
+  /// while (first < last - 1) {
+  /// swap(*first, *--last);
+  /// ++first;
+  /// }
+  /// }
+  ///
+  /// struct Y { };
+  /// void swap(Y&, Y&);
+  /// \endcode
+  ///
+  /// Here, the identifier "swap" is associated with an overloaded declaration
+  /// reference. In the template definition, "swap" refers to either of the two
+  /// "swap" functions declared above, so both results will be available. At
+  /// instantiation time, "swap" may also refer to other functions found via
+  /// argument-dependent lookup (e.g., the "swap" function at the end of the
+  /// example).
+  ///
+  /// The functions \c clang_getNumOverloadedDecls() and
+  /// \c clang_getOverloadedDecl() can be used to retrieve the definitions
+  /// referenced by this cursor.
+  static const int CXCursor_OverloadedDeclRef = 49;
+
+  /// A reference to a variable that occurs in some non-expression
+  /// context, e.g., a C++ lambda capture list.
+  static const int CXCursor_VariableRef = 50;
+  static const int CXCursor_LastRef = 50;
+  static const int CXCursor_FirstInvalid = 70;
+  static const int CXCursor_InvalidFile = 70;
+  static const int CXCursor_NoDeclFound = 71;
+  static const int CXCursor_NotImplemented = 72;
+  static const int CXCursor_InvalidCode = 73;
+  static const int CXCursor_LastInvalid = 73;
+  static const int CXCursor_FirstExpr = 100;
+
+  /// An expression whose specific kind is not exposed via this
+  /// interface.
+  ///
+  /// Unexposed expressions have the same operations as any other kind
+  /// of expression; one can extract their location information,
+  /// spelling, children, etc. However, the specific kind of the
+  /// expression is not reported.
+  static const int CXCursor_UnexposedExpr = 100;
+
+  /// An expression that refers to some value declaration, such
+  /// as a function, variable, or enumerator.
+  static const int CXCursor_DeclRefExpr = 101;
+
+  /// An expression that refers to a member of a struct, union,
+  /// class, Objective-C class, etc.
+  static const int CXCursor_MemberRefExpr = 102;
+
+  /// An expression that calls a function.
+  static const int CXCursor_CallExpr = 103;
+
+  /// An expression that sends a message to an Objective-C
+  /// object or class.
+  static const int CXCursor_ObjCMessageExpr = 104;
+
+  /// An expression that represents a block literal.
+  static const int CXCursor_BlockExpr = 105;
+
+  /// An integer literal.
+  static const int CXCursor_IntegerLiteral = 106;
+
+  /// A floating point number literal.
+  static const int CXCursor_FloatingLiteral = 107;
+
+  /// An imaginary number literal.
+  static const int CXCursor_ImaginaryLiteral = 108;
+
+  /// A string literal.
+  static const int CXCursor_StringLiteral = 109;
+
+  /// A character literal.
+  static const int CXCursor_CharacterLiteral = 110;
+
+  /// A parenthesized expression, e.g. "(1)".
+  ///
+  /// This AST node is only formed if full location information is requested.
+  static const int CXCursor_ParenExpr = 111;
+
+  /// This represents the unary-expression's (except sizeof and
+  /// alignof).
+  static const int CXCursor_UnaryOperator = 112;
+
+  /// [C99 6.5.2.1] Array Subscripting.
+  static const int CXCursor_ArraySubscriptExpr = 113;
+
+  /// A builtin binary operation expression such as "x + y" or
+  /// "x <= y".
+  static const int CXCursor_BinaryOperator = 114;
+
+  /// Compound assignment such as "+=".
+  static const int CXCursor_CompoundAssignOperator = 115;
+
+  /// The ?: ternary operator.
+  static const int CXCursor_ConditionalOperator = 116;
+
+  /// An explicit cast in C (C99 6.5.4) or a C-style cast in C++
+  /// (C++ [expr.cast]), which uses the syntax (Type)expr.
+  ///
+  /// For example: (int)f.
+  static const int CXCursor_CStyleCastExpr = 117;
+
+  /// [C99 6.5.2.5]
+  static const int CXCursor_CompoundLiteralExpr = 118;
+
+  /// Describes an C or C++ initializer list.
+  static const int CXCursor_InitListExpr = 119;
+
+  /// The GNU address of label extension, representing &&label.
+  static const int CXCursor_AddrLabelExpr = 120;
+
+  /// This is the GNU Statement Expression extension: ({int X=4; X;})
+  static const int CXCursor_StmtExpr = 121;
+
+  /// Represents a C11 generic selection.
+  static const int CXCursor_GenericSelectionExpr = 122;
+
+  /// Implements the GNU __null extension, which is a name for a null
+  /// pointer constant that has integral type (e.g., int or long) and is the same
+  /// size and alignment as a pointer.
+  ///
+  /// The __null extension is typically only used by system headers, which define
+  /// NULL as __null in C++ rather than using 0 (which is an integer that may not
+  /// match the size of a pointer).
+  static const int CXCursor_GNUNullExpr = 123;
+
+  /// C++'s static_cast<> expression.
+  static const int CXCursor_CXXStaticCastExpr = 124;
+
+  /// C++'s dynamic_cast<> expression.
+  static const int CXCursor_CXXDynamicCastExpr = 125;
+
+  /// C++'s reinterpret_cast<> expression.
+  static const int CXCursor_CXXReinterpretCastExpr = 126;
+
+  /// C++'s const_cast<> expression.
+  static const int CXCursor_CXXConstCastExpr = 127;
+
+  /// Represents an explicit C++ type conversion that uses "functional"
+  /// notion (C++ [expr.type.conv]).
+  ///
+  /// Example:
+  /// \code
+  /// x = int(0.5);
+  /// \endcode
+  static const int CXCursor_CXXFunctionalCastExpr = 128;
+
+  /// A C++ typeid expression (C++ [expr.typeid]).
+  static const int CXCursor_CXXTypeidExpr = 129;
+
+  /// [C++ 2.13.5] C++ Boolean Literal.
+  static const int CXCursor_CXXBoolLiteralExpr = 130;
+
+  /// [C++0x 2.14.7] C++ Pointer Literal.
+  static const int CXCursor_CXXNullPtrLiteralExpr = 131;
+
+  /// Represents the "this" expression in C++
+  static const int CXCursor_CXXThisExpr = 132;
+
+  /// [C++ 15] C++ Throw Expression.
+  ///
+  /// This handles 'throw' and 'throw' assignment-expression. When
+  /// assignment-expression isn't present, Op will be null.
+  static const int CXCursor_CXXThrowExpr = 133;
+
+  /// A new expression for memory allocation and constructor calls, e.g:
+  /// "new CXXNewExpr(foo)".
+  static const int CXCursor_CXXNewExpr = 134;
+
+  /// A delete expression for memory deallocation and destructor calls,
+  /// e.g. "delete[] pArray".
+  static const int CXCursor_CXXDeleteExpr = 135;
+
+  /// A unary expression. (noexcept, sizeof, or other traits)
+  static const int CXCursor_UnaryExpr = 136;
+
+  /// An Objective-C string literal i.e. @"foo".
+  static const int CXCursor_ObjCStringLiteral = 137;
+
+  /// An Objective-C \@encode expression.
+  static const int CXCursor_ObjCEncodeExpr = 138;
+
+  /// An Objective-C \@selector expression.
+  static const int CXCursor_ObjCSelectorExpr = 139;
+
+  /// An Objective-C \@protocol expression.
+  static const int CXCursor_ObjCProtocolExpr = 140;
+
+  /// An Objective-C "bridged" cast expression, which casts between
+  /// Objective-C pointers and C pointers, transferring ownership in the process.
+  ///
+  /// \code
+  /// NSString *str = (__bridge_transfer NSString *)CFCreateString();
+  /// \endcode
+  static const int CXCursor_ObjCBridgedCastExpr = 141;
+
+  /// Represents a C++0x pack expansion that produces a sequence of
+  /// expressions.
+  ///
+  /// A pack expansion expression contains a pattern (which itself is an
+  /// expression) followed by an ellipsis. For example:
+  ///
+  /// \code
+  /// template<typename F, typename ...Types>
+  /// void forward(F f, Types &&...args) {
+  /// f(static_cast<Types&&>(args)...);
+  /// }
+  /// \endcode
+  static const int CXCursor_PackExpansionExpr = 142;
+
+  /// Represents an expression that computes the length of a parameter
+  /// pack.
+  ///
+  /// \code
+  /// template<typename ...Types>
+  /// struct count {
+  /// static const unsigned value = sizeof...(Types);
+  /// };
+  /// \endcode
+  static const int CXCursor_SizeOfPackExpr = 143;
+  static const int CXCursor_LambdaExpr = 144;
+
+  /// Objective-c Boolean Literal.
+  static const int CXCursor_ObjCBoolLiteralExpr = 145;
+
+  /// Represents the "self" expression in an Objective-C method.
+  static const int CXCursor_ObjCSelfExpr = 146;
+
+  /// OpenMP 4.0 [2.4, Array Section].
+  static const int CXCursor_OMPArraySectionExpr = 147;
+
+  /// Represents an @available(...) check.
+  static const int CXCursor_ObjCAvailabilityCheckExpr = 148;
+
+  /// Fixed point literal
+  static const int CXCursor_FixedPointLiteral = 149;
+  static const int CXCursor_LastExpr = 149;
+  static const int CXCursor_FirstStmt = 200;
+
+  /// A statement whose specific kind is not exposed via this
+  /// interface.
+  ///
+  /// Unexposed statements have the same operations as any other kind of
+  /// statement; one can extract their location information, spelling,
+  /// children, etc. However, the specific kind of the statement is not
+  /// reported.
+  static const int CXCursor_UnexposedStmt = 200;
+
+  /// A labelled statement in a function.
+  ///
+  /// This cursor kind is used to describe the "start_over:" label statement in
+  /// the following example:
+  ///
+  /// \code
+  /// start_over:
+  /// ++counter;
+  /// \endcode
+  static const int CXCursor_LabelStmt = 201;
+
+  /// A group of statements like { stmt stmt }.
+  ///
+  /// This cursor kind is used to describe compound statements, e.g. function
+  /// bodies.
+  static const int CXCursor_CompoundStmt = 202;
+
+  /// A case statement.
+  static const int CXCursor_CaseStmt = 203;
+
+  /// A default statement.
+  static const int CXCursor_DefaultStmt = 204;
+
+  /// An if statement
+  static const int CXCursor_IfStmt = 205;
+
+  /// A switch statement.
+  static const int CXCursor_SwitchStmt = 206;
+
+  /// A while statement.
+  static const int CXCursor_WhileStmt = 207;
+
+  /// A do statement.
+  static const int CXCursor_DoStmt = 208;
+
+  /// A for statement.
+  static const int CXCursor_ForStmt = 209;
+
+  /// A goto statement.
+  static const int CXCursor_GotoStmt = 210;
+
+  /// An indirect goto statement.
+  static const int CXCursor_IndirectGotoStmt = 211;
+
+  /// A continue statement.
+  static const int CXCursor_ContinueStmt = 212;
+
+  /// A break statement.
+  static const int CXCursor_BreakStmt = 213;
+
+  /// A return statement.
+  static const int CXCursor_ReturnStmt = 214;
+
+  /// A GCC inline assembly statement extension.
+  static const int CXCursor_GCCAsmStmt = 215;
+  static const int CXCursor_AsmStmt = 215;
+
+  /// Objective-C's overall \@try-\@catch-\@finally statement.
+  static const int CXCursor_ObjCAtTryStmt = 216;
+
+  /// Objective-C's \@catch statement.
+  static const int CXCursor_ObjCAtCatchStmt = 217;
+
+  /// Objective-C's \@finally statement.
+  static const int CXCursor_ObjCAtFinallyStmt = 218;
+
+  /// Objective-C's \@throw statement.
+  static const int CXCursor_ObjCAtThrowStmt = 219;
+
+  /// Objective-C's \@synchronized statement.
+  static const int CXCursor_ObjCAtSynchronizedStmt = 220;
+
+  /// Objective-C's autorelease pool statement.
+  static const int CXCursor_ObjCAutoreleasePoolStmt = 221;
+
+  /// Objective-C's collection statement.
+  static const int CXCursor_ObjCForCollectionStmt = 222;
+
+  /// C++'s catch statement.
+  static const int CXCursor_CXXCatchStmt = 223;
+
+  /// C++'s try statement.
+  static const int CXCursor_CXXTryStmt = 224;
+
+  /// C++'s for (* : *) statement.
+  static const int CXCursor_CXXForRangeStmt = 225;
+
+  /// Windows Structured Exception Handling's try statement.
+  static const int CXCursor_SEHTryStmt = 226;
+
+  /// Windows Structured Exception Handling's except statement.
+  static const int CXCursor_SEHExceptStmt = 227;
+
+  /// Windows Structured Exception Handling's finally statement.
+  static const int CXCursor_SEHFinallyStmt = 228;
+
+  /// A MS inline assembly statement extension.
+  static const int CXCursor_MSAsmStmt = 229;
+
+  /// The null statement ";": C99 6.8.3p3.
+  ///
+  /// This cursor kind is used to describe the null statement.
+  static const int CXCursor_NullStmt = 230;
+
+  /// Adaptor class for mixing declarations with statements and
+  /// expressions.
+  static const int CXCursor_DeclStmt = 231;
+
+  /// OpenMP parallel directive.
+  static const int CXCursor_OMPParallelDirective = 232;
+
+  /// OpenMP SIMD directive.
+  static const int CXCursor_OMPSimdDirective = 233;
+
+  /// OpenMP for directive.
+  static const int CXCursor_OMPForDirective = 234;
+
+  /// OpenMP sections directive.
+  static const int CXCursor_OMPSectionsDirective = 235;
+
+  /// OpenMP section directive.
+  static const int CXCursor_OMPSectionDirective = 236;
+
+  /// OpenMP single directive.
+  static const int CXCursor_OMPSingleDirective = 237;
+
+  /// OpenMP parallel for directive.
+  static const int CXCursor_OMPParallelForDirective = 238;
+
+  /// OpenMP parallel sections directive.
+  static const int CXCursor_OMPParallelSectionsDirective = 239;
+
+  /// OpenMP task directive.
+  static const int CXCursor_OMPTaskDirective = 240;
+
+  /// OpenMP master directive.
+  static const int CXCursor_OMPMasterDirective = 241;
+
+  /// OpenMP critical directive.
+  static const int CXCursor_OMPCriticalDirective = 242;
+
+  /// OpenMP taskyield directive.
+  static const int CXCursor_OMPTaskyieldDirective = 243;
+
+  /// OpenMP barrier directive.
+  static const int CXCursor_OMPBarrierDirective = 244;
+
+  /// OpenMP taskwait directive.
+  static const int CXCursor_OMPTaskwaitDirective = 245;
+
+  /// OpenMP flush directive.
+  static const int CXCursor_OMPFlushDirective = 246;
+
+  /// Windows Structured Exception Handling's leave statement.
+  static const int CXCursor_SEHLeaveStmt = 247;
+
+  /// OpenMP ordered directive.
+  static const int CXCursor_OMPOrderedDirective = 248;
+
+  /// OpenMP atomic directive.
+  static const int CXCursor_OMPAtomicDirective = 249;
+
+  /// OpenMP for SIMD directive.
+  static const int CXCursor_OMPForSimdDirective = 250;
+
+  /// OpenMP parallel for SIMD directive.
+  static const int CXCursor_OMPParallelForSimdDirective = 251;
+
+  /// OpenMP target directive.
+  static const int CXCursor_OMPTargetDirective = 252;
+
+  /// OpenMP teams directive.
+  static const int CXCursor_OMPTeamsDirective = 253;
+
+  /// OpenMP taskgroup directive.
+  static const int CXCursor_OMPTaskgroupDirective = 254;
+
+  /// OpenMP cancellation point directive.
+  static const int CXCursor_OMPCancellationPointDirective = 255;
+
+  /// OpenMP cancel directive.
+  static const int CXCursor_OMPCancelDirective = 256;
+
+  /// OpenMP target data directive.
+  static const int CXCursor_OMPTargetDataDirective = 257;
+
+  /// OpenMP taskloop directive.
+  static const int CXCursor_OMPTaskLoopDirective = 258;
+
+  /// OpenMP taskloop simd directive.
+  static const int CXCursor_OMPTaskLoopSimdDirective = 259;
+
+  /// OpenMP distribute directive.
+  static const int CXCursor_OMPDistributeDirective = 260;
+
+  /// OpenMP target enter data directive.
+  static const int CXCursor_OMPTargetEnterDataDirective = 261;
+
+  /// OpenMP target exit data directive.
+  static const int CXCursor_OMPTargetExitDataDirective = 262;
+
+  /// OpenMP target parallel directive.
+  static const int CXCursor_OMPTargetParallelDirective = 263;
+
+  /// OpenMP target parallel for directive.
+  static const int CXCursor_OMPTargetParallelForDirective = 264;
+
+  /// OpenMP target update directive.
+  static const int CXCursor_OMPTargetUpdateDirective = 265;
+
+  /// OpenMP distribute parallel for directive.
+  static const int CXCursor_OMPDistributeParallelForDirective = 266;
+
+  /// OpenMP distribute parallel for simd directive.
+  static const int CXCursor_OMPDistributeParallelForSimdDirective = 267;
+
+  /// OpenMP distribute simd directive.
+  static const int CXCursor_OMPDistributeSimdDirective = 268;
+
+  /// OpenMP target parallel for simd directive.
+  static const int CXCursor_OMPTargetParallelForSimdDirective = 269;
+
+  /// OpenMP target simd directive.
+  static const int CXCursor_OMPTargetSimdDirective = 270;
+
+  /// OpenMP teams distribute directive.
+  static const int CXCursor_OMPTeamsDistributeDirective = 271;
+
+  /// OpenMP teams distribute simd directive.
+  static const int CXCursor_OMPTeamsDistributeSimdDirective = 272;
+
+  /// OpenMP teams distribute parallel for simd directive.
+  static const int CXCursor_OMPTeamsDistributeParallelForSimdDirective = 273;
+
+  /// OpenMP teams distribute parallel for directive.
+  static const int CXCursor_OMPTeamsDistributeParallelForDirective = 274;
+
+  /// OpenMP target teams directive.
+  static const int CXCursor_OMPTargetTeamsDirective = 275;
+
+  /// OpenMP target teams distribute directive.
+  static const int CXCursor_OMPTargetTeamsDistributeDirective = 276;
+
+  /// OpenMP target teams distribute parallel for directive.
+  static const int CXCursor_OMPTargetTeamsDistributeParallelForDirective = 277;
+
+  /// OpenMP target teams distribute parallel for simd directive.
+  static const int CXCursor_OMPTargetTeamsDistributeParallelForSimdDirective =
+      278;
+
+  /// OpenMP target teams distribute simd directive.
+  static const int CXCursor_OMPTargetTeamsDistributeSimdDirective = 279;
+
+  /// C++2a std::bit_cast expression.
+  static const int CXCursor_BuiltinBitCastExpr = 280;
+
+  /// OpenMP master taskloop directive.
+  static const int CXCursor_OMPMasterTaskLoopDirective = 281;
+
+  /// OpenMP parallel master taskloop directive.
+  static const int CXCursor_OMPParallelMasterTaskLoopDirective = 282;
+
+  /// OpenMP master taskloop simd directive.
+  static const int CXCursor_OMPMasterTaskLoopSimdDirective = 283;
+
+  /// OpenMP parallel master taskloop simd directive.
+  static const int CXCursor_OMPParallelMasterTaskLoopSimdDirective = 284;
+
+  /// OpenMP parallel master directive.
+  static const int CXCursor_OMPParallelMasterDirective = 285;
+  static const int CXCursor_LastStmt = 285;
+
+  /// Cursor that represents the translation unit itself.
+  ///
+  /// The translation unit cursor exists primarily to act as the root
+  /// cursor for traversing the contents of a translation unit.
+  static const int CXCursor_TranslationUnit = 300;
+  static const int CXCursor_FirstAttr = 400;
+
+  /// An attribute whose specific kind is not exposed via this
+  /// interface.
+  static const int CXCursor_UnexposedAttr = 400;
+  static const int CXCursor_IBActionAttr = 401;
+  static const int CXCursor_IBOutletAttr = 402;
+  static const int CXCursor_IBOutletCollectionAttr = 403;
+  static const int CXCursor_CXXFinalAttr = 404;
+  static const int CXCursor_CXXOverrideAttr = 405;
+  static const int CXCursor_AnnotateAttr = 406;
+  static const int CXCursor_AsmLabelAttr = 407;
+  static const int CXCursor_PackedAttr = 408;
+  static const int CXCursor_PureAttr = 409;
+  static const int CXCursor_ConstAttr = 410;
+  static const int CXCursor_NoDuplicateAttr = 411;
+  static const int CXCursor_CUDAConstantAttr = 412;
+  static const int CXCursor_CUDADeviceAttr = 413;
+  static const int CXCursor_CUDAGlobalAttr = 414;
+  static const int CXCursor_CUDAHostAttr = 415;
+  static const int CXCursor_CUDASharedAttr = 416;
+  static const int CXCursor_VisibilityAttr = 417;
+  static const int CXCursor_DLLExport = 418;
+  static const int CXCursor_DLLImport = 419;
+  static const int CXCursor_NSReturnsRetained = 420;
+  static const int CXCursor_NSReturnsNotRetained = 421;
+  static const int CXCursor_NSReturnsAutoreleased = 422;
+  static const int CXCursor_NSConsumesSelf = 423;
+  static const int CXCursor_NSConsumed = 424;
+  static const int CXCursor_ObjCException = 425;
+  static const int CXCursor_ObjCNSObject = 426;
+  static const int CXCursor_ObjCIndependentClass = 427;
+  static const int CXCursor_ObjCPreciseLifetime = 428;
+  static const int CXCursor_ObjCReturnsInnerPointer = 429;
+  static const int CXCursor_ObjCRequiresSuper = 430;
+  static const int CXCursor_ObjCRootClass = 431;
+  static const int CXCursor_ObjCSubclassingRestricted = 432;
+  static const int CXCursor_ObjCExplicitProtocolImpl = 433;
+  static const int CXCursor_ObjCDesignatedInitializer = 434;
+  static const int CXCursor_ObjCRuntimeVisible = 435;
+  static const int CXCursor_ObjCBoxable = 436;
+  static const int CXCursor_FlagEnum = 437;
+  static const int CXCursor_ConvergentAttr = 438;
+  static const int CXCursor_WarnUnusedAttr = 439;
+  static const int CXCursor_WarnUnusedResultAttr = 440;
+  static const int CXCursor_AlignedAttr = 441;
+  static const int CXCursor_LastAttr = 441;
+  static const int CXCursor_PreprocessingDirective = 500;
+  static const int CXCursor_MacroDefinition = 501;
+  static const int CXCursor_MacroExpansion = 502;
+  static const int CXCursor_MacroInstantiation = 502;
+  static const int CXCursor_InclusionDirective = 503;
+  static const int CXCursor_FirstPreprocessing = 500;
+  static const int CXCursor_LastPreprocessing = 503;
+
+  /// A module import declaration.
+  static const int CXCursor_ModuleImportDecl = 600;
+  static const int CXCursor_TypeAliasTemplateDecl = 601;
+
+  /// A static_assert or _Static_assert node
+  static const int CXCursor_StaticAssert = 602;
+
+  /// a friend declaration.
+  static const int CXCursor_FriendDecl = 603;
+  static const int CXCursor_FirstExtraDecl = 600;
+  static const int CXCursor_LastExtraDecl = 603;
+
+  /// A code completion overload candidate.
+  static const int CXCursor_OverloadCandidate = 700;
+}
+
+typedef Native_clang_getNullCursor = CXCursor Function();
+typedef Native_clang_getTranslationUnitCursor = CXCursor Function(
+    CXTranslationUnit arg0);
+typedef Native_clang_equalCursors = ffi.Uint32 Function(
+    CXCursor arg0, CXCursor arg1);
+typedef Native_clang_Cursor_isNull = ffi.Int32 Function(CXCursor cursor);
+typedef Native_clang_hashCursor = ffi.Uint32 Function(CXCursor arg0);
+typedef Native_clang_getCursorKind = ffi.Int32 Function(CXCursor arg0);
+typedef Native_clang_isDeclaration = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_isInvalidDeclaration = ffi.Uint32 Function(CXCursor arg0);
+typedef Native_clang_isReference = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_isExpression = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_isStatement = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_isAttribute = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_Cursor_hasAttrs = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_isInvalid = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_isTranslationUnit = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_isPreprocessing = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_isUnexposed = ffi.Uint32 Function(ffi.Int32 arg0);
+typedef Native_clang_getCursorLinkage = ffi.Int32 Function(CXCursor cursor);
+
+/// Describe the linkage of the entity referred to by a cursor.
+abstract class CXLinkageKind {
+  /// This value indicates that no linkage information is available
+  /// for a provided CXCursor.
+  static const int CXLinkage_Invalid = 0;
+
+  /// This is the linkage for variables, parameters, and so on that
+  /// have automatic storage.  This covers normal (non-extern) local variables.
+  static const int CXLinkage_NoLinkage = 1;
+
+  /// This is the linkage for static variables and static functions.
+  static const int CXLinkage_Internal = 2;
+
+  /// This is the linkage for entities with external linkage that live
+  /// in C++ anonymous namespaces.
+  static const int CXLinkage_UniqueExternal = 3;
+
+  /// This is the linkage for entities with true, external linkage.
+  static const int CXLinkage_External = 4;
+}
+
+typedef Native_clang_getCursorVisibility = ffi.Int32 Function(CXCursor cursor);
+
+abstract class CXVisibilityKind {
+  /// This value indicates that no visibility information is available
+  /// for a provided CXCursor.
+  static const int CXVisibility_Invalid = 0;
+
+  /// Symbol not seen by the linker.
+  static const int CXVisibility_Hidden = 1;
+
+  /// Symbol seen by the linker but resolves to a symbol inside this object.
+  static const int CXVisibility_Protected = 2;
+
+  /// Symbol seen by the linker and acts like a normal symbol.
+  static const int CXVisibility_Default = 3;
+}
+
+typedef Native_clang_getCursorAvailability = ffi.Int32 Function(
+    CXCursor cursor);
+
+/// Describes the availability of a particular entity, which indicates
+/// whether the use of this entity will result in a warning or error due to
+/// it being deprecated or unavailable.
+abstract class CXAvailabilityKind {
+  /// The entity is available.
+  static const int CXAvailability_Available = 0;
+
+  /// The entity is available, but has been deprecated (and its use is
+  /// not recommended).
+  static const int CXAvailability_Deprecated = 1;
+
+  /// The entity is not available; any use of it will be an error.
+  static const int CXAvailability_NotAvailable = 2;
+
+  /// The entity is available, but not accessible; any use of it will be
+  /// an error.
+  static const int CXAvailability_NotAccessible = 3;
+}
+
 /// Describes the availability of a given entity on a particular platform, e.g.,
 /// a particular class might only be available on Mac OS 10.7 or newer.
 class CXPlatformAvailability extends ffi.Struct {
@@ -8044,8 +9193,67 @@
   external CXString Message;
 }
 
+typedef Native_clang_getCursorPlatformAvailability = ffi.Int32 Function(
+    CXCursor cursor,
+    ffi.Pointer<ffi.Int32> always_deprecated,
+    ffi.Pointer<CXString> deprecated_message,
+    ffi.Pointer<ffi.Int32> always_unavailable,
+    ffi.Pointer<CXString> unavailable_message,
+    ffi.Pointer<CXPlatformAvailability> availability,
+    ffi.Int32 availability_size);
+typedef Native_clang_disposeCXPlatformAvailability = ffi.Void Function(
+    ffi.Pointer<CXPlatformAvailability> availability);
+typedef Native_clang_getCursorLanguage = ffi.Int32 Function(CXCursor cursor);
+
+/// Describe the "language" of the entity referred to by a cursor.
+abstract class CXLanguageKind {
+  static const int CXLanguage_Invalid = 0;
+  static const int CXLanguage_C = 1;
+  static const int CXLanguage_ObjC = 2;
+  static const int CXLanguage_CPlusPlus = 3;
+}
+
+typedef Native_clang_getCursorTLSKind = ffi.Int32 Function(CXCursor cursor);
+
+/// Describe the "thread-local storage (TLS) kind" of the declaration
+/// referred to by a cursor.
+abstract class CXTLSKind {
+  static const int CXTLS_None = 0;
+  static const int CXTLS_Dynamic = 1;
+  static const int CXTLS_Static = 2;
+}
+
+typedef Native_clang_Cursor_getTranslationUnit = CXTranslationUnit Function(
+    CXCursor arg0);
+
 class CXCursorSetImpl extends ffi.Opaque {}
 
+typedef Native_clang_createCXCursorSet = CXCursorSet Function();
+
+/// A fast container representing a set of CXCursors.
+typedef CXCursorSet = ffi.Pointer<CXCursorSetImpl>;
+typedef Native_clang_disposeCXCursorSet = ffi.Void Function(CXCursorSet cset);
+typedef Native_clang_CXCursorSet_contains = ffi.Uint32 Function(
+    CXCursorSet cset, CXCursor cursor);
+typedef Native_clang_CXCursorSet_insert = ffi.Uint32 Function(
+    CXCursorSet cset, CXCursor cursor);
+typedef Native_clang_getCursorSemanticParent = CXCursor Function(
+    CXCursor cursor);
+typedef Native_clang_getCursorLexicalParent = CXCursor Function(
+    CXCursor cursor);
+typedef Native_clang_getOverriddenCursors = ffi.Void Function(
+    CXCursor cursor,
+    ffi.Pointer<ffi.Pointer<CXCursor>> overridden,
+    ffi.Pointer<ffi.Uint32> num_overridden);
+typedef Native_clang_disposeOverriddenCursors = ffi.Void Function(
+    ffi.Pointer<CXCursor> overridden);
+typedef Native_clang_getIncludedFile = CXFile Function(CXCursor cursor);
+typedef Native_clang_getCursor = CXCursor Function(
+    CXTranslationUnit arg0, CXSourceLocation arg1);
+typedef Native_clang_getCursorLocation = CXSourceLocation Function(
+    CXCursor arg0);
+typedef Native_clang_getCursorExtent = CXSourceRange Function(CXCursor arg0);
+
 /// Describes the kind of type
 abstract class CXTypeKind {
   /// Represents an invalid type (e.g., where no type is available).
@@ -8185,6 +9393,367 @@
   external ffi.Array<ffi.Pointer<ffi.Void>> data;
 }
 
+typedef Native_clang_getCursorType = CXType Function(CXCursor C);
+typedef Native_clang_getTypeSpelling = CXString Function(CXType CT);
+typedef Native_clang_getTypedefDeclUnderlyingType = CXType Function(CXCursor C);
+typedef Native_clang_getEnumDeclIntegerType = CXType Function(CXCursor C);
+typedef Native_clang_getEnumConstantDeclValue = ffi.Int64 Function(CXCursor C);
+typedef Native_clang_getEnumConstantDeclUnsignedValue = ffi.Uint64 Function(
+    CXCursor C);
+typedef Native_clang_getFieldDeclBitWidth = ffi.Int32 Function(CXCursor C);
+typedef Native_clang_Cursor_getNumArguments = ffi.Int32 Function(CXCursor C);
+typedef Native_clang_Cursor_getArgument = CXCursor Function(
+    CXCursor C, ffi.Uint32 i);
+typedef Native_clang_Cursor_getNumTemplateArguments = ffi.Int32 Function(
+    CXCursor C);
+typedef Native_clang_Cursor_getTemplateArgumentKind = ffi.Int32 Function(
+    CXCursor C, ffi.Uint32 I);
+
+/// Describes the kind of a template argument.
+///
+/// See the definition of llvm::clang::TemplateArgument::ArgKind for full
+/// element descriptions.
+abstract class CXTemplateArgumentKind {
+  static const int CXTemplateArgumentKind_Null = 0;
+  static const int CXTemplateArgumentKind_Type = 1;
+  static const int CXTemplateArgumentKind_Declaration = 2;
+  static const int CXTemplateArgumentKind_NullPtr = 3;
+  static const int CXTemplateArgumentKind_Integral = 4;
+  static const int CXTemplateArgumentKind_Template = 5;
+  static const int CXTemplateArgumentKind_TemplateExpansion = 6;
+  static const int CXTemplateArgumentKind_Expression = 7;
+  static const int CXTemplateArgumentKind_Pack = 8;
+  static const int CXTemplateArgumentKind_Invalid = 9;
+}
+
+typedef Native_clang_Cursor_getTemplateArgumentType = CXType Function(
+    CXCursor C, ffi.Uint32 I);
+typedef Native_clang_Cursor_getTemplateArgumentValue = ffi.Int64 Function(
+    CXCursor C, ffi.Uint32 I);
+typedef Native_clang_Cursor_getTemplateArgumentUnsignedValue = ffi.Uint64
+    Function(CXCursor C, ffi.Uint32 I);
+typedef Native_clang_equalTypes = ffi.Uint32 Function(CXType A, CXType B);
+typedef Native_clang_getCanonicalType = CXType Function(CXType T);
+typedef Native_clang_isConstQualifiedType = ffi.Uint32 Function(CXType T);
+typedef Native_clang_Cursor_isMacroFunctionLike = ffi.Uint32 Function(
+    CXCursor C);
+typedef Native_clang_Cursor_isMacroBuiltin = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_Cursor_isFunctionInlined = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_isVolatileQualifiedType = ffi.Uint32 Function(CXType T);
+typedef Native_clang_isRestrictQualifiedType = ffi.Uint32 Function(CXType T);
+typedef Native_clang_getAddressSpace = ffi.Uint32 Function(CXType T);
+typedef Native_clang_getTypedefName = CXString Function(CXType CT);
+typedef Native_clang_getPointeeType = CXType Function(CXType T);
+typedef Native_clang_getTypeDeclaration = CXCursor Function(CXType T);
+typedef Native_clang_getDeclObjCTypeEncoding = CXString Function(CXCursor C);
+typedef Native_clang_Type_getObjCEncoding = CXString Function(CXType type);
+typedef Native_clang_getTypeKindSpelling = CXString Function(ffi.Int32 K);
+typedef Native_clang_getFunctionTypeCallingConv = ffi.Int32 Function(CXType T);
+
+/// Describes the calling convention of a function type
+abstract class CXCallingConv {
+  static const int CXCallingConv_Default = 0;
+  static const int CXCallingConv_C = 1;
+  static const int CXCallingConv_X86StdCall = 2;
+  static const int CXCallingConv_X86FastCall = 3;
+  static const int CXCallingConv_X86ThisCall = 4;
+  static const int CXCallingConv_X86Pascal = 5;
+  static const int CXCallingConv_AAPCS = 6;
+  static const int CXCallingConv_AAPCS_VFP = 7;
+  static const int CXCallingConv_X86RegCall = 8;
+  static const int CXCallingConv_IntelOclBicc = 9;
+  static const int CXCallingConv_Win64 = 10;
+  static const int CXCallingConv_X86_64Win64 = 10;
+  static const int CXCallingConv_X86_64SysV = 11;
+  static const int CXCallingConv_X86VectorCall = 12;
+  static const int CXCallingConv_Swift = 13;
+  static const int CXCallingConv_PreserveMost = 14;
+  static const int CXCallingConv_PreserveAll = 15;
+  static const int CXCallingConv_AArch64VectorCall = 16;
+  static const int CXCallingConv_Invalid = 100;
+  static const int CXCallingConv_Unexposed = 200;
+}
+
+typedef Native_clang_getResultType = CXType Function(CXType T);
+typedef Native_clang_getExceptionSpecificationType = ffi.Int32 Function(
+    CXType T);
+typedef Native_clang_getNumArgTypes = ffi.Int32 Function(CXType T);
+typedef Native_clang_getArgType = CXType Function(CXType T, ffi.Uint32 i);
+typedef Native_clang_Type_getObjCObjectBaseType = CXType Function(CXType T);
+typedef Native_clang_Type_getNumObjCProtocolRefs = ffi.Uint32 Function(
+    CXType T);
+typedef Native_clang_Type_getObjCProtocolDecl = CXCursor Function(
+    CXType T, ffi.Uint32 i);
+typedef Native_clang_Type_getNumObjCTypeArgs = ffi.Uint32 Function(CXType T);
+typedef Native_clang_Type_getObjCTypeArg = CXType Function(
+    CXType T, ffi.Uint32 i);
+typedef Native_clang_isFunctionTypeVariadic = ffi.Uint32 Function(CXType T);
+typedef Native_clang_getCursorResultType = CXType Function(CXCursor C);
+typedef Native_clang_getCursorExceptionSpecificationType = ffi.Int32 Function(
+    CXCursor C);
+typedef Native_clang_isPODType = ffi.Uint32 Function(CXType T);
+typedef Native_clang_getElementType = CXType Function(CXType T);
+typedef Native_clang_getNumElements = ffi.Int64 Function(CXType T);
+typedef Native_clang_getArrayElementType = CXType Function(CXType T);
+typedef Native_clang_getArraySize = ffi.Int64 Function(CXType T);
+typedef Native_clang_Type_getNamedType = CXType Function(CXType T);
+typedef Native_clang_Type_isTransparentTagTypedef = ffi.Uint32 Function(
+    CXType T);
+typedef Native_clang_Type_getNullability = ffi.Int32 Function(CXType T);
+
+abstract class CXTypeNullabilityKind {
+  /// Values of this type can never be null.
+  static const int CXTypeNullability_NonNull = 0;
+
+  /// Values of this type can be null.
+  static const int CXTypeNullability_Nullable = 1;
+
+  /// Whether values of this type can be null is (explicitly)
+  /// unspecified. This captures a (fairly rare) case where we
+  /// can't conclude anything about the nullability of the type even
+  /// though it has been considered.
+  static const int CXTypeNullability_Unspecified = 2;
+
+  /// Nullability is not applicable to this type.
+  static const int CXTypeNullability_Invalid = 3;
+}
+
+typedef Native_clang_Type_getAlignOf = ffi.Int64 Function(CXType T);
+typedef Native_clang_Type_getClassType = CXType Function(CXType T);
+typedef Native_clang_Type_getSizeOf = ffi.Int64 Function(CXType T);
+typedef Native_clang_Type_getOffsetOf = ffi.Int64 Function(
+    CXType T, ffi.Pointer<ffi.Int8> S);
+typedef Native_clang_Type_getModifiedType = CXType Function(CXType T);
+typedef Native_clang_Cursor_getOffsetOfField = ffi.Int64 Function(CXCursor C);
+typedef Native_clang_Cursor_isAnonymous = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_Cursor_isAnonymousRecordDecl = ffi.Uint32 Function(
+    CXCursor C);
+typedef Native_clang_Cursor_isInlineNamespace = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_Type_getNumTemplateArguments = ffi.Int32 Function(
+    CXType T);
+typedef Native_clang_Type_getTemplateArgumentAsType = CXType Function(
+    CXType T, ffi.Uint32 i);
+typedef Native_clang_Type_getCXXRefQualifier = ffi.Int32 Function(CXType T);
+
+abstract class CXRefQualifierKind {
+  /// No ref-qualifier was provided.
+  static const int CXRefQualifier_None = 0;
+
+  /// An lvalue ref-qualifier was provided (\c &).
+  static const int CXRefQualifier_LValue = 1;
+
+  /// An rvalue ref-qualifier was provided (\c &&).
+  static const int CXRefQualifier_RValue = 2;
+}
+
+typedef Native_clang_Cursor_isBitField = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_isVirtualBase = ffi.Uint32 Function(CXCursor arg0);
+typedef Native_clang_getCXXAccessSpecifier = ffi.Int32 Function(CXCursor arg0);
+
+/// Represents the C++ access control level to a base class for a
+/// cursor with kind CX_CXXBaseSpecifier.
+abstract class CX_CXXAccessSpecifier {
+  static const int CX_CXXInvalidAccessSpecifier = 0;
+  static const int CX_CXXPublic = 1;
+  static const int CX_CXXProtected = 2;
+  static const int CX_CXXPrivate = 3;
+}
+
+typedef Native_clang_Cursor_getStorageClass = ffi.Int32 Function(CXCursor arg0);
+
+/// Represents the storage classes as declared in the source. CX_SC_Invalid
+/// was added for the case that the passed cursor in not a declaration.
+abstract class CX_StorageClass {
+  static const int CX_SC_Invalid = 0;
+  static const int CX_SC_None = 1;
+  static const int CX_SC_Extern = 2;
+  static const int CX_SC_Static = 3;
+  static const int CX_SC_PrivateExtern = 4;
+  static const int CX_SC_OpenCLWorkGroupLocal = 5;
+  static const int CX_SC_Auto = 6;
+  static const int CX_SC_Register = 7;
+}
+
+typedef Native_clang_getNumOverloadedDecls = ffi.Uint32 Function(
+    CXCursor cursor);
+typedef Native_clang_getOverloadedDecl = CXCursor Function(
+    CXCursor cursor, ffi.Uint32 index);
+typedef Native_clang_getIBOutletCollectionType = CXType Function(CXCursor arg0);
+typedef Native_clang_visitChildren = ffi.Uint32 Function(
+    CXCursor parent, CXCursorVisitor visitor, CXClientData client_data);
+
+/// Visitor invoked for each cursor found by a traversal.
+///
+/// This visitor function will be invoked for each cursor found by
+/// clang_visitCursorChildren(). Its first argument is the cursor being
+/// visited, its second argument is the parent visitor for that cursor,
+/// and its third argument is the client data provided to
+/// clang_visitCursorChildren().
+///
+/// The visitor should return one of the \c CXChildVisitResult values
+/// to direct clang_visitCursorChildren().
+typedef CXCursorVisitor = ffi.Pointer<
+    ffi.NativeFunction<ffi.Int32 Function(CXCursor, CXCursor, CXClientData)>>;
+
+/// Describes how the traversal of the children of a particular
+/// cursor should proceed after visiting a particular child cursor.
+///
+/// A value of this enumeration type should be returned by each
+/// \c CXCursorVisitor to indicate how clang_visitChildren() proceed.
+abstract class CXChildVisitResult {
+  /// Terminates the cursor traversal.
+  static const int CXChildVisit_Break = 0;
+
+  /// Continues the cursor traversal with the next sibling of
+  /// the cursor just visited, without visiting its children.
+  static const int CXChildVisit_Continue = 1;
+
+  /// Recursively traverse the children of this cursor, using
+  /// the same visitor and client data.
+  static const int CXChildVisit_Recurse = 2;
+}
+
+/// Opaque pointer representing client data that will be passed through
+/// to various callbacks and visitors.
+typedef CXClientData = ffi.Pointer<ffi.Void>;
+typedef Native_clang_getCursorUSR = CXString Function(CXCursor arg0);
+typedef Native_clang_constructUSR_ObjCClass = CXString Function(
+    ffi.Pointer<ffi.Int8> class_name);
+typedef Native_clang_constructUSR_ObjCCategory = CXString Function(
+    ffi.Pointer<ffi.Int8> class_name, ffi.Pointer<ffi.Int8> category_name);
+typedef Native_clang_constructUSR_ObjCProtocol = CXString Function(
+    ffi.Pointer<ffi.Int8> protocol_name);
+typedef Native_clang_constructUSR_ObjCIvar = CXString Function(
+    ffi.Pointer<ffi.Int8> name, CXString classUSR);
+typedef Native_clang_constructUSR_ObjCMethod = CXString Function(
+    ffi.Pointer<ffi.Int8> name, ffi.Uint32 isInstanceMethod, CXString classUSR);
+typedef Native_clang_constructUSR_ObjCProperty = CXString Function(
+    ffi.Pointer<ffi.Int8> property, CXString classUSR);
+typedef Native_clang_getCursorSpelling = CXString Function(CXCursor arg0);
+typedef Native_clang_Cursor_getSpellingNameRange = CXSourceRange Function(
+    CXCursor arg0, ffi.Uint32 pieceIndex, ffi.Uint32 options);
+typedef Native_clang_PrintingPolicy_getProperty = ffi.Uint32 Function(
+    CXPrintingPolicy Policy, ffi.Int32 Property);
+
+/// Opaque pointer representing a policy that controls pretty printing
+/// for \c clang_getCursorPrettyPrinted.
+typedef CXPrintingPolicy = ffi.Pointer<ffi.Void>;
+
+/// Properties for the printing policy.
+///
+/// See \c clang::PrintingPolicy for more information.
+abstract class CXPrintingPolicyProperty {
+  static const int CXPrintingPolicy_Indentation = 0;
+  static const int CXPrintingPolicy_SuppressSpecifiers = 1;
+  static const int CXPrintingPolicy_SuppressTagKeyword = 2;
+  static const int CXPrintingPolicy_IncludeTagDefinition = 3;
+  static const int CXPrintingPolicy_SuppressScope = 4;
+  static const int CXPrintingPolicy_SuppressUnwrittenScope = 5;
+  static const int CXPrintingPolicy_SuppressInitializers = 6;
+  static const int CXPrintingPolicy_ConstantArraySizeAsWritten = 7;
+  static const int CXPrintingPolicy_AnonymousTagLocations = 8;
+  static const int CXPrintingPolicy_SuppressStrongLifetime = 9;
+  static const int CXPrintingPolicy_SuppressLifetimeQualifiers = 10;
+  static const int CXPrintingPolicy_SuppressTemplateArgsInCXXConstructors = 11;
+  static const int CXPrintingPolicy_Bool = 12;
+  static const int CXPrintingPolicy_Restrict = 13;
+  static const int CXPrintingPolicy_Alignof = 14;
+  static const int CXPrintingPolicy_UnderscoreAlignof = 15;
+  static const int CXPrintingPolicy_UseVoidForZeroParams = 16;
+  static const int CXPrintingPolicy_TerseOutput = 17;
+  static const int CXPrintingPolicy_PolishForDeclaration = 18;
+  static const int CXPrintingPolicy_Half = 19;
+  static const int CXPrintingPolicy_MSWChar = 20;
+  static const int CXPrintingPolicy_IncludeNewlines = 21;
+  static const int CXPrintingPolicy_MSVCFormatting = 22;
+  static const int CXPrintingPolicy_ConstantsAsWritten = 23;
+  static const int CXPrintingPolicy_SuppressImplicitBase = 24;
+  static const int CXPrintingPolicy_FullyQualifiedName = 25;
+  static const int CXPrintingPolicy_LastProperty = 25;
+}
+
+typedef Native_clang_PrintingPolicy_setProperty = ffi.Void Function(
+    CXPrintingPolicy Policy, ffi.Int32 Property, ffi.Uint32 Value);
+typedef Native_clang_getCursorPrintingPolicy = CXPrintingPolicy Function(
+    CXCursor arg0);
+typedef Native_clang_PrintingPolicy_dispose = ffi.Void Function(
+    CXPrintingPolicy Policy);
+typedef Native_clang_getCursorPrettyPrinted = CXString Function(
+    CXCursor Cursor, CXPrintingPolicy Policy);
+typedef Native_clang_getCursorDisplayName = CXString Function(CXCursor arg0);
+typedef Native_clang_getCursorReferenced = CXCursor Function(CXCursor arg0);
+typedef Native_clang_getCursorDefinition = CXCursor Function(CXCursor arg0);
+typedef Native_clang_isCursorDefinition = ffi.Uint32 Function(CXCursor arg0);
+typedef Native_clang_getCanonicalCursor = CXCursor Function(CXCursor arg0);
+typedef Native_clang_Cursor_getObjCSelectorIndex = ffi.Int32 Function(
+    CXCursor arg0);
+typedef Native_clang_Cursor_isDynamicCall = ffi.Int32 Function(CXCursor C);
+typedef Native_clang_Cursor_getReceiverType = CXType Function(CXCursor C);
+typedef Native_clang_Cursor_getObjCPropertyAttributes = ffi.Uint32 Function(
+    CXCursor C, ffi.Uint32 reserved);
+typedef Native_clang_Cursor_getObjCPropertyGetterName = CXString Function(
+    CXCursor C);
+typedef Native_clang_Cursor_getObjCPropertySetterName = CXString Function(
+    CXCursor C);
+typedef Native_clang_Cursor_getObjCDeclQualifiers = ffi.Uint32 Function(
+    CXCursor C);
+typedef Native_clang_Cursor_isObjCOptional = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_Cursor_isVariadic = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_Cursor_isExternalSymbol = ffi.Uint32 Function(
+    CXCursor C,
+    ffi.Pointer<CXString> language,
+    ffi.Pointer<CXString> definedIn,
+    ffi.Pointer<ffi.Uint32> isGenerated);
+typedef Native_clang_Cursor_getCommentRange = CXSourceRange Function(
+    CXCursor C);
+typedef Native_clang_Cursor_getRawCommentText = CXString Function(CXCursor C);
+typedef Native_clang_Cursor_getBriefCommentText = CXString Function(CXCursor C);
+typedef Native_clang_Cursor_getMangling = CXString Function(CXCursor arg0);
+typedef Native_clang_Cursor_getCXXManglings = ffi.Pointer<CXStringSet> Function(
+    CXCursor arg0);
+typedef Native_clang_Cursor_getObjCManglings = ffi.Pointer<CXStringSet>
+    Function(CXCursor arg0);
+typedef Native_clang_Cursor_getModule = CXModule Function(CXCursor C);
+
+/// \defgroup CINDEX_MODULE Module introspection
+///
+/// The functions in this group provide access to information about modules.
+///
+/// @{
+typedef CXModule = ffi.Pointer<ffi.Void>;
+typedef Native_clang_getModuleForFile = CXModule Function(
+    CXTranslationUnit arg0, CXFile arg1);
+typedef Native_clang_Module_getASTFile = CXFile Function(CXModule Module);
+typedef Native_clang_Module_getParent = CXModule Function(CXModule Module);
+typedef Native_clang_Module_getName = CXString Function(CXModule Module);
+typedef Native_clang_Module_getFullName = CXString Function(CXModule Module);
+typedef Native_clang_Module_isSystem = ffi.Int32 Function(CXModule Module);
+typedef Native_clang_Module_getNumTopLevelHeaders = ffi.Uint32 Function(
+    CXTranslationUnit arg0, CXModule Module);
+typedef Native_clang_Module_getTopLevelHeader = CXFile Function(
+    CXTranslationUnit arg0, CXModule Module, ffi.Uint32 Index);
+typedef Native_clang_CXXConstructor_isConvertingConstructor = ffi.Uint32
+    Function(CXCursor C);
+typedef Native_clang_CXXConstructor_isCopyConstructor = ffi.Uint32 Function(
+    CXCursor C);
+typedef Native_clang_CXXConstructor_isDefaultConstructor = ffi.Uint32 Function(
+    CXCursor C);
+typedef Native_clang_CXXConstructor_isMoveConstructor = ffi.Uint32 Function(
+    CXCursor C);
+typedef Native_clang_CXXField_isMutable = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_CXXMethod_isDefaulted = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_CXXMethod_isPureVirtual = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_CXXMethod_isStatic = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_CXXMethod_isVirtual = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_CXXRecord_isAbstract = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_EnumDecl_isScoped = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_CXXMethod_isConst = ffi.Uint32 Function(CXCursor C);
+typedef Native_clang_getTemplateCursorKind = ffi.Int32 Function(CXCursor C);
+typedef Native_clang_getSpecializedCursorTemplate = CXCursor Function(
+    CXCursor C);
+typedef Native_clang_getCursorReferenceNameRange = CXSourceRange Function(
+    CXCursor C, ffi.Uint32 NameFlags, ffi.Uint32 PieceIndex);
+
 /// Describes a single preprocessing token.
 class CXToken extends ffi.Struct {
   @ffi.Array.multi([4])
@@ -8193,6 +9762,62 @@
   external ffi.Pointer<ffi.Void> ptr_data;
 }
 
+typedef Native_clang_getToken = ffi.Pointer<CXToken> Function(
+    CXTranslationUnit TU, CXSourceLocation Location);
+typedef Native_clang_getTokenKind = ffi.Int32 Function(CXToken arg0);
+
+/// Describes a kind of token.
+abstract class CXTokenKind {
+  /// A token that contains some kind of punctuation.
+  static const int CXToken_Punctuation = 0;
+
+  /// A language keyword.
+  static const int CXToken_Keyword = 1;
+
+  /// An identifier (that is not a keyword).
+  static const int CXToken_Identifier = 2;
+
+  /// A numeric, string, or character literal.
+  static const int CXToken_Literal = 3;
+
+  /// A comment.
+  static const int CXToken_Comment = 4;
+}
+
+typedef Native_clang_getTokenSpelling = CXString Function(
+    CXTranslationUnit arg0, CXToken arg1);
+typedef Native_clang_getTokenLocation = CXSourceLocation Function(
+    CXTranslationUnit arg0, CXToken arg1);
+typedef Native_clang_getTokenExtent = CXSourceRange Function(
+    CXTranslationUnit arg0, CXToken arg1);
+typedef Native_clang_tokenize = ffi.Void Function(
+    CXTranslationUnit TU,
+    CXSourceRange Range,
+    ffi.Pointer<ffi.Pointer<CXToken>> Tokens,
+    ffi.Pointer<ffi.Uint32> NumTokens);
+typedef Native_clang_annotateTokens = ffi.Void Function(
+    CXTranslationUnit TU,
+    ffi.Pointer<CXToken> Tokens,
+    ffi.Uint32 NumTokens,
+    ffi.Pointer<CXCursor> Cursors);
+typedef Native_clang_disposeTokens = ffi.Void Function(
+    CXTranslationUnit TU, ffi.Pointer<CXToken> Tokens, ffi.Uint32 NumTokens);
+typedef Native_clang_getCursorKindSpelling = CXString Function(ffi.Int32 Kind);
+typedef Native_clang_getDefinitionSpellingAndExtent = ffi.Void Function(
+    CXCursor arg0,
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> startBuf,
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> endBuf,
+    ffi.Pointer<ffi.Uint32> startLine,
+    ffi.Pointer<ffi.Uint32> startColumn,
+    ffi.Pointer<ffi.Uint32> endLine,
+    ffi.Pointer<ffi.Uint32> endColumn);
+typedef Native_clang_enableStackTraces = ffi.Void Function();
+typedef Native_clang_executeOnThread = ffi.Void Function(
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        fn,
+    ffi.Pointer<ffi.Void> user_data,
+    ffi.Uint32 stack_size);
+
 /// A single result of code completion.
 class CXCompletionResult extends ffi.Struct {
   /// The kind of entity that this completion refers to.
@@ -8208,9 +9833,192 @@
 
   /// The code-completion string that describes how to insert this
   /// code-completion result into the editing buffer.
-  external ffi.Pointer<ffi.Void> CompletionString;
+  external CXCompletionString CompletionString;
 }
 
+/// A semantic string that describes a code-completion result.
+///
+/// A semantic string that describes the formatting of a code-completion
+/// result as a single "template" of text that should be inserted into the
+/// source buffer when a particular code-completion result is selected.
+/// Each semantic string is made up of some number of "chunks", each of which
+/// contains some text along with a description of what that text means, e.g.,
+/// the name of the entity being referenced, whether the text chunk is part of
+/// the template, or whether it is a "placeholder" that the user should replace
+/// with actual code,of a specific kind. See \c CXCompletionChunkKind for a
+/// description of the different kinds of chunks.
+typedef CXCompletionString = ffi.Pointer<ffi.Void>;
+typedef Native_clang_getCompletionChunkKind = ffi.Int32 Function(
+    CXCompletionString completion_string, ffi.Uint32 chunk_number);
+
+/// Describes a single piece of text within a code-completion string.
+///
+/// Each "chunk" within a code-completion string (\c CXCompletionString) is
+/// either a piece of text with a specific "kind" that describes how that text
+/// should be interpreted by the client or is another completion string.
+abstract class CXCompletionChunkKind {
+  /// A code-completion string that describes "optional" text that
+  /// could be a part of the template (but is not required).
+  ///
+  /// The Optional chunk is the only kind of chunk that has a code-completion
+  /// string for its representation, which is accessible via
+  /// \c clang_getCompletionChunkCompletionString(). The code-completion string
+  /// describes an additional part of the template that is completely optional.
+  /// For example, optional chunks can be used to describe the placeholders for
+  /// arguments that match up with defaulted function parameters, e.g. given:
+  ///
+  /// \code
+  /// void f(int x, float y = 3.14, double z = 2.71828);
+  /// \endcode
+  ///
+  /// The code-completion string for this function would contain:
+  /// - a TypedText chunk for "f".
+  /// - a LeftParen chunk for "(".
+  /// - a Placeholder chunk for "int x"
+  /// - an Optional chunk containing the remaining defaulted arguments, e.g.,
+  /// - a Comma chunk for ","
+  /// - a Placeholder chunk for "float y"
+  /// - an Optional chunk containing the last defaulted argument:
+  /// - a Comma chunk for ","
+  /// - a Placeholder chunk for "double z"
+  /// - a RightParen chunk for ")"
+  ///
+  /// There are many ways to handle Optional chunks. Two simple approaches are:
+  /// - Completely ignore optional chunks, in which case the template for the
+  /// function "f" would only include the first parameter ("int x").
+  /// - Fully expand all optional chunks, in which case the template for the
+  /// function "f" would have all of the parameters.
+  static const int CXCompletionChunk_Optional = 0;
+
+  /// Text that a user would be expected to type to get this
+  /// code-completion result.
+  ///
+  /// There will be exactly one "typed text" chunk in a semantic string, which
+  /// will typically provide the spelling of a keyword or the name of a
+  /// declaration that could be used at the current code point. Clients are
+  /// expected to filter the code-completion results based on the text in this
+  /// chunk.
+  static const int CXCompletionChunk_TypedText = 1;
+
+  /// Text that should be inserted as part of a code-completion result.
+  ///
+  /// A "text" chunk represents text that is part of the template to be
+  /// inserted into user code should this particular code-completion result
+  /// be selected.
+  static const int CXCompletionChunk_Text = 2;
+
+  /// Placeholder text that should be replaced by the user.
+  ///
+  /// A "placeholder" chunk marks a place where the user should insert text
+  /// into the code-completion template. For example, placeholders might mark
+  /// the function parameters for a function declaration, to indicate that the
+  /// user should provide arguments for each of those parameters. The actual
+  /// text in a placeholder is a suggestion for the text to display before
+  /// the user replaces the placeholder with real code.
+  static const int CXCompletionChunk_Placeholder = 3;
+
+  /// Informative text that should be displayed but never inserted as
+  /// part of the template.
+  ///
+  /// An "informative" chunk contains annotations that can be displayed to
+  /// help the user decide whether a particular code-completion result is the
+  /// right option, but which is not part of the actual template to be inserted
+  /// by code completion.
+  static const int CXCompletionChunk_Informative = 4;
+
+  /// Text that describes the current parameter when code-completion is
+  /// referring to function call, message send, or template specialization.
+  ///
+  /// A "current parameter" chunk occurs when code-completion is providing
+  /// information about a parameter corresponding to the argument at the
+  /// code-completion point. For example, given a function
+  ///
+  /// \code
+  /// int add(int x, int y);
+  /// \endcode
+  ///
+  /// and the source code \c add(, where the code-completion point is after the
+  /// "(", the code-completion string will contain a "current parameter" chunk
+  /// for "int x", indicating that the current argument will initialize that
+  /// parameter. After typing further, to \c add(17, (where the code-completion
+  /// point is after the ","), the code-completion string will contain a
+  /// "current parameter" chunk to "int y".
+  static const int CXCompletionChunk_CurrentParameter = 5;
+
+  /// A left parenthesis ('('), used to initiate a function call or
+  /// signal the beginning of a function parameter list.
+  static const int CXCompletionChunk_LeftParen = 6;
+
+  /// A right parenthesis (')'), used to finish a function call or
+  /// signal the end of a function parameter list.
+  static const int CXCompletionChunk_RightParen = 7;
+
+  /// A left bracket ('[').
+  static const int CXCompletionChunk_LeftBracket = 8;
+
+  /// A right bracket (']').
+  static const int CXCompletionChunk_RightBracket = 9;
+
+  /// A left brace ('{').
+  static const int CXCompletionChunk_LeftBrace = 10;
+
+  /// A right brace ('}').
+  static const int CXCompletionChunk_RightBrace = 11;
+
+  /// A left angle bracket ('<').
+  static const int CXCompletionChunk_LeftAngle = 12;
+
+  /// A right angle bracket ('>').
+  static const int CXCompletionChunk_RightAngle = 13;
+
+  /// A comma separator (',').
+  static const int CXCompletionChunk_Comma = 14;
+
+  /// Text that specifies the result type of a given result.
+  ///
+  /// This special kind of informative chunk is not meant to be inserted into
+  /// the text buffer. Rather, it is meant to illustrate the type that an
+  /// expression using the given completion string would have.
+  static const int CXCompletionChunk_ResultType = 15;
+
+  /// A colon (':').
+  static const int CXCompletionChunk_Colon = 16;
+
+  /// A semicolon (';').
+  static const int CXCompletionChunk_SemiColon = 17;
+
+  /// An '=' sign.
+  static const int CXCompletionChunk_Equal = 18;
+
+  /// Horizontal space (' ').
+  static const int CXCompletionChunk_HorizontalSpace = 19;
+
+  /// Vertical space ('\\n'), after which it is generally a good idea to
+  /// perform indentation.
+  static const int CXCompletionChunk_VerticalSpace = 20;
+}
+
+typedef Native_clang_getCompletionChunkText = CXString Function(
+    CXCompletionString completion_string, ffi.Uint32 chunk_number);
+typedef Native_clang_getCompletionChunkCompletionString = CXCompletionString
+    Function(CXCompletionString completion_string, ffi.Uint32 chunk_number);
+typedef Native_clang_getNumCompletionChunks = ffi.Uint32 Function(
+    CXCompletionString completion_string);
+typedef Native_clang_getCompletionPriority = ffi.Uint32 Function(
+    CXCompletionString completion_string);
+typedef Native_clang_getCompletionAvailability = ffi.Int32 Function(
+    CXCompletionString completion_string);
+typedef Native_clang_getCompletionNumAnnotations = ffi.Uint32 Function(
+    CXCompletionString completion_string);
+typedef Native_clang_getCompletionAnnotation = CXString Function(
+    CXCompletionString completion_string, ffi.Uint32 annotation_number);
+typedef Native_clang_getCompletionParent = CXString Function(
+    CXCompletionString completion_string, ffi.Pointer<ffi.Int32> kind);
+typedef Native_clang_getCompletionBriefComment = CXString Function(
+    CXCompletionString completion_string);
+typedef Native_clang_getCursorCompletionString = CXCompletionString Function(
+    CXCursor cursor);
+
 /// Contains the results of code-completion.
 ///
 /// This data structure contains the results of code completion, as
@@ -8226,12 +10034,137 @@
   external int NumResults;
 }
 
+typedef Native_clang_getCompletionNumFixIts = ffi.Uint32 Function(
+    ffi.Pointer<CXCodeCompleteResults> results, ffi.Uint32 completion_index);
+typedef Native_clang_getCompletionFixIt = CXString Function(
+    ffi.Pointer<CXCodeCompleteResults> results,
+    ffi.Uint32 completion_index,
+    ffi.Uint32 fixit_index,
+    ffi.Pointer<CXSourceRange> replacement_range);
+typedef Native_clang_defaultCodeCompleteOptions = ffi.Uint32 Function();
+typedef Native_clang_codeCompleteAt
+    = ffi.Pointer<CXCodeCompleteResults> Function(
+        CXTranslationUnit TU,
+        ffi.Pointer<ffi.Int8> complete_filename,
+        ffi.Uint32 complete_line,
+        ffi.Uint32 complete_column,
+        ffi.Pointer<CXUnsavedFile> unsaved_files,
+        ffi.Uint32 num_unsaved_files,
+        ffi.Uint32 options);
+typedef Native_clang_sortCodeCompletionResults = ffi.Void Function(
+    ffi.Pointer<CXCompletionResult> Results, ffi.Uint32 NumResults);
+typedef Native_clang_disposeCodeCompleteResults = ffi.Void Function(
+    ffi.Pointer<CXCodeCompleteResults> Results);
+typedef Native_clang_codeCompleteGetNumDiagnostics = ffi.Uint32 Function(
+    ffi.Pointer<CXCodeCompleteResults> Results);
+typedef Native_clang_codeCompleteGetDiagnostic = CXDiagnostic Function(
+    ffi.Pointer<CXCodeCompleteResults> Results, ffi.Uint32 Index);
+typedef Native_clang_codeCompleteGetContexts = ffi.Uint64 Function(
+    ffi.Pointer<CXCodeCompleteResults> Results);
+typedef Native_clang_codeCompleteGetContainerKind = ffi.Int32 Function(
+    ffi.Pointer<CXCodeCompleteResults> Results,
+    ffi.Pointer<ffi.Uint32> IsIncomplete);
+typedef Native_clang_codeCompleteGetContainerUSR = CXString Function(
+    ffi.Pointer<CXCodeCompleteResults> Results);
+typedef Native_clang_codeCompleteGetObjCSelector = CXString Function(
+    ffi.Pointer<CXCodeCompleteResults> Results);
+typedef Native_clang_getClangVersion = CXString Function();
+typedef Native_clang_toggleCrashRecovery = ffi.Void Function(
+    ffi.Uint32 isEnabled);
+typedef Native_clang_getInclusions = ffi.Void Function(
+    CXTranslationUnit tu, CXInclusionVisitor visitor, CXClientData client_data);
+
+/// Visitor invoked for each file in a translation unit
+/// (used with clang_getInclusions()).
+///
+/// This visitor function will be invoked by clang_getInclusions() for each
+/// file included (either at the top-level or by \#include directives) within
+/// a translation unit.  The first argument is the file being included, and
+/// the second and third arguments provide the inclusion stack.  The
+/// array is sorted in order of immediate inclusion.  For example,
+/// the first element refers to the location that included 'included_file'.
+typedef CXInclusionVisitor = ffi.Pointer<
+    ffi.NativeFunction<
+        ffi.Void Function(
+            CXFile, ffi.Pointer<CXSourceLocation>, ffi.Uint32, CXClientData)>>;
+typedef Native_clang_Cursor_Evaluate = CXEvalResult Function(CXCursor C);
+
+/// Evaluation result of a cursor
+typedef CXEvalResult = ffi.Pointer<ffi.Void>;
+typedef Native_clang_EvalResult_getKind = ffi.Int32 Function(CXEvalResult E);
+
+abstract class CXEvalResultKind {
+  static const int CXEval_Int = 1;
+  static const int CXEval_Float = 2;
+  static const int CXEval_ObjCStrLiteral = 3;
+  static const int CXEval_StrLiteral = 4;
+  static const int CXEval_CFStr = 5;
+  static const int CXEval_Other = 6;
+  static const int CXEval_UnExposed = 0;
+}
+
+typedef Native_clang_EvalResult_getAsInt = ffi.Int32 Function(CXEvalResult E);
+typedef Native_clang_EvalResult_getAsLongLong = ffi.Int64 Function(
+    CXEvalResult E);
+typedef Native_clang_EvalResult_isUnsignedInt = ffi.Uint32 Function(
+    CXEvalResult E);
+typedef Native_clang_EvalResult_getAsUnsigned = ffi.Uint64 Function(
+    CXEvalResult E);
+typedef Native_clang_EvalResult_getAsDouble = ffi.Double Function(
+    CXEvalResult E);
+typedef Native_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
+    CXEvalResult E);
+typedef Native_clang_EvalResult_dispose = ffi.Void Function(CXEvalResult E);
+typedef Native_clang_getRemappings = CXRemapping Function(
+    ffi.Pointer<ffi.Int8> path);
+
+/// A remapping of original source files and their translated files.
+typedef CXRemapping = ffi.Pointer<ffi.Void>;
+typedef Native_clang_getRemappingsFromFileList = CXRemapping Function(
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths, ffi.Uint32 numFiles);
+typedef Native_clang_remap_getNumFiles = ffi.Uint32 Function(CXRemapping arg0);
+typedef Native_clang_remap_getFilenames = ffi.Void Function(
+    CXRemapping arg0,
+    ffi.Uint32 index,
+    ffi.Pointer<CXString> original,
+    ffi.Pointer<CXString> transformed);
+typedef Native_clang_remap_dispose = ffi.Void Function(CXRemapping arg0);
+
 class CXCursorAndRangeVisitor extends ffi.Struct {
   external ffi.Pointer<ffi.Void> context;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_2>> visit;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ffi.Void>, CXCursor, CXSourceRange)>> visit;
 }
 
+/// \defgroup CINDEX_HIGH Higher level API functions
+///
+/// @{
+abstract class CXVisitorResult {
+  static const int CXVisit_Break = 0;
+  static const int CXVisit_Continue = 1;
+}
+
+typedef Native_clang_findReferencesInFile = ffi.Int32 Function(
+    CXCursor cursor, CXFile file, CXCursorAndRangeVisitor visitor);
+
+abstract class CXResult {
+  /// Function returned successfully.
+  static const int CXResult_Success = 0;
+
+  /// One of the parameters was invalid for the function.
+  static const int CXResult_Invalid = 1;
+
+  /// The function was terminated by a callback (e.g. it returned
+  /// CXVisit_Break)
+  static const int CXResult_VisitBreak = 2;
+}
+
+typedef Native_clang_findIncludesInFile = ffi.Int32 Function(
+    CXTranslationUnit TU, CXFile file, CXCursorAndRangeVisitor visitor);
+
 /// Source location passed to index callbacks.
 class CXIdxLoc extends ffi.Struct {
   @ffi.Array.multi([2])
@@ -8250,7 +10183,7 @@
   external ffi.Pointer<ffi.Int8> filename;
 
   /// The actual file that the \#include/\#import directive resolved to.
-  external ffi.Pointer<ffi.Void> file;
+  external CXFile file;
 
   @ffi.Int32()
   external int isImport;
@@ -8267,10 +10200,10 @@
 /// Data for IndexerCallbacks#importedASTFile.
 class CXIdxImportedASTFileInfo extends ffi.Struct {
   /// Top level AST file containing the imported PCH, module or submodule.
-  external ffi.Pointer<ffi.Void> file;
+  external CXFile file;
 
   /// The imported module or NULL if the AST file is a PCH.
-  external ffi.Pointer<ffi.Void> module;
+  external CXModule module;
 
   /// Location where the file is imported. Applicable only for modules.
   external CXIdxLoc loc;
@@ -8290,6 +10223,13 @@
   external CXIdxLoc loc;
 }
 
+abstract class CXIdxAttrKind {
+  static const int CXIdxAttr_Unexposed = 0;
+  static const int CXIdxAttr_IBAction = 1;
+  static const int CXIdxAttr_IBOutlet = 2;
+  static const int CXIdxAttr_IBOutletCollection = 3;
+}
+
 class CXIdxEntityInfo extends ffi.Struct {
   @ffi.Int32()
   external int kind;
@@ -8312,6 +10252,59 @@
   external int numAttributes;
 }
 
+abstract class CXIdxEntityKind {
+  static const int CXIdxEntity_Unexposed = 0;
+  static const int CXIdxEntity_Typedef = 1;
+  static const int CXIdxEntity_Function = 2;
+  static const int CXIdxEntity_Variable = 3;
+  static const int CXIdxEntity_Field = 4;
+  static const int CXIdxEntity_EnumConstant = 5;
+  static const int CXIdxEntity_ObjCClass = 6;
+  static const int CXIdxEntity_ObjCProtocol = 7;
+  static const int CXIdxEntity_ObjCCategory = 8;
+  static const int CXIdxEntity_ObjCInstanceMethod = 9;
+  static const int CXIdxEntity_ObjCClassMethod = 10;
+  static const int CXIdxEntity_ObjCProperty = 11;
+  static const int CXIdxEntity_ObjCIvar = 12;
+  static const int CXIdxEntity_Enum = 13;
+  static const int CXIdxEntity_Struct = 14;
+  static const int CXIdxEntity_Union = 15;
+  static const int CXIdxEntity_CXXClass = 16;
+  static const int CXIdxEntity_CXXNamespace = 17;
+  static const int CXIdxEntity_CXXNamespaceAlias = 18;
+  static const int CXIdxEntity_CXXStaticVariable = 19;
+  static const int CXIdxEntity_CXXStaticMethod = 20;
+  static const int CXIdxEntity_CXXInstanceMethod = 21;
+  static const int CXIdxEntity_CXXConstructor = 22;
+  static const int CXIdxEntity_CXXDestructor = 23;
+  static const int CXIdxEntity_CXXConversionFunction = 24;
+  static const int CXIdxEntity_CXXTypeAlias = 25;
+  static const int CXIdxEntity_CXXInterface = 26;
+}
+
+/// Extra C++ template information for an entity. This can apply to:
+/// CXIdxEntity_Function
+/// CXIdxEntity_CXXClass
+/// CXIdxEntity_CXXStaticMethod
+/// CXIdxEntity_CXXInstanceMethod
+/// CXIdxEntity_CXXConstructor
+/// CXIdxEntity_CXXConversionFunction
+/// CXIdxEntity_CXXTypeAlias
+abstract class CXIdxEntityCXXTemplateKind {
+  static const int CXIdxEntity_NonTemplate = 0;
+  static const int CXIdxEntity_Template = 1;
+  static const int CXIdxEntity_TemplatePartialSpecialization = 2;
+  static const int CXIdxEntity_TemplateSpecialization = 3;
+}
+
+abstract class CXIdxEntityLanguage {
+  static const int CXIdxEntityLang_None = 0;
+  static const int CXIdxEntityLang_C = 1;
+  static const int CXIdxEntityLang_ObjC = 2;
+  static const int CXIdxEntityLang_CXX = 3;
+  static const int CXIdxEntityLang_Swift = 4;
+}
+
 class CXIdxContainerInfo extends ffi.Struct {
   external CXCursor cursor;
 }
@@ -8371,6 +10364,12 @@
   external int kind;
 }
 
+abstract class CXIdxObjCContainerKind {
+  static const int CXIdxObjCContainer_ForwardRef = 0;
+  static const int CXIdxObjCContainer_Interface = 1;
+  static const int CXIdxObjCContainer_Implementation = 2;
+}
+
 class CXIdxBaseClassInfo extends ffi.Struct {
   external ffi.Pointer<CXIdxEntityInfo> base;
 
@@ -8463,20 +10462,122 @@
   external int role;
 }
 
+/// Data for IndexerCallbacks#indexEntityReference.
+///
+/// This may be deprecated in a future version as this duplicates
+/// the \c CXSymbolRole_Implicit bit in \c CXSymbolRole.
+abstract class CXIdxEntityRefKind {
+  /// The entity is referenced directly in user's code.
+  static const int CXIdxEntityRef_Direct = 1;
+
+  /// An implicit reference, e.g. a reference of an Objective-C method
+  /// via the dot syntax.
+  static const int CXIdxEntityRef_Implicit = 2;
+}
+
+/// Roles that are attributed to symbol occurrences.
+///
+/// Internal: this currently mirrors low 9 bits of clang::index::SymbolRole with
+/// higher bits zeroed. These high bits may be exposed in the future.
+abstract class CXSymbolRole {
+  static const int CXSymbolRole_None = 0;
+  static const int CXSymbolRole_Declaration = 1;
+  static const int CXSymbolRole_Definition = 2;
+  static const int CXSymbolRole_Reference = 4;
+  static const int CXSymbolRole_Read = 8;
+  static const int CXSymbolRole_Write = 16;
+  static const int CXSymbolRole_Call = 32;
+  static const int CXSymbolRole_Dynamic = 64;
+  static const int CXSymbolRole_AddressOf = 128;
+  static const int CXSymbolRole_Implicit = 256;
+}
+
+typedef Native_clang_index_isEntityObjCContainerKind = ffi.Int32 Function(
+    ffi.Int32 arg0);
+typedef Native_clang_index_getObjCContainerDeclInfo
+    = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
+        ffi.Pointer<CXIdxDeclInfo> arg0);
+typedef Native_clang_index_getObjCInterfaceDeclInfo
+    = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
+        ffi.Pointer<CXIdxDeclInfo> arg0);
+typedef Native_clang_index_getObjCCategoryDeclInfo
+    = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
+        ffi.Pointer<CXIdxDeclInfo> arg0);
+typedef Native_clang_index_getObjCProtocolRefListInfo
+    = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
+        ffi.Pointer<CXIdxDeclInfo> arg0);
+typedef Native_clang_index_getObjCPropertyDeclInfo
+    = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
+        ffi.Pointer<CXIdxDeclInfo> arg0);
+typedef Native_clang_index_getIBOutletCollectionAttrInfo
+    = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
+        ffi.Pointer<CXIdxAttrInfo> arg0);
+typedef Native_clang_index_getCXXClassDeclInfo
+    = ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
+        ffi.Pointer<CXIdxDeclInfo> arg0);
+typedef Native_clang_index_getClientContainer = CXIdxClientContainer Function(
+    ffi.Pointer<CXIdxContainerInfo> arg0);
+
+/// The client's data object that is associated with a semantic container
+/// of entities.
+typedef CXIdxClientContainer = ffi.Pointer<ffi.Void>;
+typedef Native_clang_index_setClientContainer = ffi.Void Function(
+    ffi.Pointer<CXIdxContainerInfo> arg0, CXIdxClientContainer arg1);
+typedef Native_clang_index_getClientEntity = CXIdxClientEntity Function(
+    ffi.Pointer<CXIdxEntityInfo> arg0);
+
+/// The client's data object that is associated with a semantic entity.
+typedef CXIdxClientEntity = ffi.Pointer<ffi.Void>;
+typedef Native_clang_index_setClientEntity = ffi.Void Function(
+    ffi.Pointer<CXIdxEntityInfo> arg0, CXIdxClientEntity arg1);
+typedef Native_clang_IndexAction_create = CXIndexAction Function(CXIndex CIdx);
+
+/// An indexing action/session, to be applied to one or multiple
+/// translation units.
+typedef CXIndexAction = ffi.Pointer<ffi.Void>;
+typedef Native_clang_IndexAction_dispose = ffi.Void Function(
+    CXIndexAction arg0);
+typedef Native_clang_indexSourceFile = ffi.Int32 Function(
+    CXIndexAction arg0,
+    CXClientData client_data,
+    ffi.Pointer<IndexerCallbacks> index_callbacks,
+    ffi.Uint32 index_callbacks_size,
+    ffi.Uint32 index_options,
+    ffi.Pointer<ffi.Int8> source_filename,
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+    ffi.Int32 num_command_line_args,
+    ffi.Pointer<CXUnsavedFile> unsaved_files,
+    ffi.Uint32 num_unsaved_files,
+    ffi.Pointer<CXTranslationUnit> out_TU,
+    ffi.Uint32 TU_options);
+
 /// A group of callbacks used by #clang_indexSourceFile and
 /// #clang_indexTranslationUnit.
 class IndexerCallbacks extends ffi.Struct {
   /// Called periodically to check whether indexing should be aborted.
   /// Should return 0 to continue, and non-zero to abort.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_3>> abortQuery;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(CXClientData, ffi.Pointer<ffi.Void>)>> abortQuery;
 
   /// Called at the end of indexing; passes the complete diagnostic set.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_4>> diagnostic;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  CXClientData, CXDiagnosticSet, ffi.Pointer<ffi.Void>)>>
+      diagnostic;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_5>> enteredMainFile;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          CXIdxClientFile Function(
+              CXClientData, CXFile, ffi.Pointer<ffi.Void>)>> enteredMainFile;
 
   /// Called when a file gets \#included/\#imported.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_6>> ppIncludedFile;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              CXIdxClientFile Function(
+                  CXClientData, ffi.Pointer<CXIdxIncludedFileInfo>)>>
+      ppIncludedFile;
 
   /// Called when a AST file (PCH or module) gets imported.
   ///
@@ -8484,17 +10585,80 @@
   /// the entities in an AST file). The recommended action is that, if the AST
   /// file is not already indexed, to initiate a new indexing job specific to
   /// the AST file.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_7>> importedASTFile;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              CXIdxClientASTFile Function(
+                  CXClientData, ffi.Pointer<CXIdxImportedASTFileInfo>)>>
+      importedASTFile;
 
   /// Called at the beginning of indexing a translation unit.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_8>> startedTranslationUnit;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          CXIdxClientContainer Function(
+              CXClientData, ffi.Pointer<ffi.Void>)>> startedTranslationUnit;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_9>> indexDeclaration;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(CXClientData, ffi.Pointer<CXIdxDeclInfo>)>>
+      indexDeclaration;
 
   /// Called to index a reference of an entity.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_10>> indexEntityReference;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(CXClientData, ffi.Pointer<CXIdxEntityRefInfo>)>>
+      indexEntityReference;
 }
 
+/// The client's data object that is associated with a CXFile.
+typedef CXIdxClientFile = ffi.Pointer<ffi.Void>;
+
+/// The client's data object that is associated with an AST file (PCH
+/// or module).
+typedef CXIdxClientASTFile = ffi.Pointer<ffi.Void>;
+typedef Native_clang_indexSourceFileFullArgv = ffi.Int32 Function(
+    CXIndexAction arg0,
+    CXClientData client_data,
+    ffi.Pointer<IndexerCallbacks> index_callbacks,
+    ffi.Uint32 index_callbacks_size,
+    ffi.Uint32 index_options,
+    ffi.Pointer<ffi.Int8> source_filename,
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+    ffi.Int32 num_command_line_args,
+    ffi.Pointer<CXUnsavedFile> unsaved_files,
+    ffi.Uint32 num_unsaved_files,
+    ffi.Pointer<CXTranslationUnit> out_TU,
+    ffi.Uint32 TU_options);
+typedef Native_clang_indexTranslationUnit = ffi.Int32 Function(
+    CXIndexAction arg0,
+    CXClientData client_data,
+    ffi.Pointer<IndexerCallbacks> index_callbacks,
+    ffi.Uint32 index_callbacks_size,
+    ffi.Uint32 index_options,
+    CXTranslationUnit arg5);
+typedef Native_clang_indexLoc_getFileLocation = ffi.Void Function(
+    CXIdxLoc loc,
+    ffi.Pointer<CXIdxClientFile> indexFile,
+    ffi.Pointer<CXFile> file,
+    ffi.Pointer<ffi.Uint32> line,
+    ffi.Pointer<ffi.Uint32> column,
+    ffi.Pointer<ffi.Uint32> offset);
+typedef Native_clang_indexLoc_getCXSourceLocation = CXSourceLocation Function(
+    CXIdxLoc loc);
+typedef Native_clang_Type_visitFields = ffi.Uint32 Function(
+    CXType T, CXFieldVisitor visitor, CXClientData client_data);
+
+/// Visitor invoked for each field found by a traversal.
+///
+/// This visitor function will be invoked for each field found by
+/// \c clang_Type_visitFields. Its first argument is the cursor being
+/// visited, its second argument is the client data provided to
+/// \c clang_Type_visitFields.
+///
+/// The visitor should return one of the \c CXVisitorResult values
+/// to direct \c clang_Type_visitFields.
+typedef CXFieldVisitor = ffi
+    .Pointer<ffi.NativeFunction<ffi.Int32 Function(CXCursor, CXClientData)>>;
+
 const int CINDEX_VERSION_MAJOR = 0;
 
 const int CINDEX_VERSION_MINOR = 59;
@@ -8502,3045 +10666,3 @@
 const int CINDEX_VERSION = 59;
 
 const String CINDEX_VERSION_STRING = '0.59';
-
-typedef Native_clang_getCString = ffi.Pointer<ffi.Int8> Function(
-  CXString string,
-);
-
-typedef _dart_clang_getCString = ffi.Pointer<ffi.Int8> Function(
-  CXString string,
-);
-
-typedef Native_clang_disposeString = ffi.Void Function(
-  CXString string,
-);
-
-typedef _dart_clang_disposeString = void Function(
-  CXString string,
-);
-
-typedef Native_clang_disposeStringSet = ffi.Void Function(
-  ffi.Pointer<CXStringSet> set_1,
-);
-
-typedef _dart_clang_disposeStringSet = void Function(
-  ffi.Pointer<CXStringSet> set_1,
-);
-
-typedef Native_clang_createIndex = ffi.Pointer<ffi.Void> Function(
-  ffi.Int32 excludeDeclarationsFromPCH,
-  ffi.Int32 displayDiagnostics,
-);
-
-typedef _dart_clang_createIndex = ffi.Pointer<ffi.Void> Function(
-  int excludeDeclarationsFromPCH,
-  int displayDiagnostics,
-);
-
-typedef Native_clang_disposeIndex = ffi.Void Function(
-  ffi.Pointer<ffi.Void> index,
-);
-
-typedef _dart_clang_disposeIndex = void Function(
-  ffi.Pointer<ffi.Void> index,
-);
-
-typedef Native_clang_CXIndex_setGlobalOptions = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_CXIndex_setGlobalOptions = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  int options,
-);
-
-typedef Native_clang_CXIndex_getGlobalOptions = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_CXIndex_getGlobalOptions = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_CXIndex_setInvocationEmissionPathOption = ffi.Void
-    Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Int8> Path,
-);
-
-typedef _dart_clang_CXIndex_setInvocationEmissionPathOption = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Int8> Path,
-);
-
-typedef Native_clang_getFileName = CXString Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileName = CXString Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef Native_clang_getFileTime = ffi.Int64 Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileTime = int Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef Native_clang_getFileUniqueID = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<CXFileUniqueID> outID,
-);
-
-typedef _dart_clang_getFileUniqueID = int Function(
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<CXFileUniqueID> outID,
-);
-
-typedef Native_clang_isFileMultipleIncludeGuarded = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_isFileMultipleIncludeGuarded = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef Native_clang_getFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Int8> file_name,
-);
-
-typedef _dart_clang_getFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Int8> file_name,
-);
-
-typedef Native_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<ffi.Uint64> size,
-);
-
-typedef _dart_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<ffi.Uint64> size,
-);
-
-typedef Native_clang_File_isEqual = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> file1,
-  ffi.Pointer<ffi.Void> file2,
-);
-
-typedef _dart_clang_File_isEqual = int Function(
-  ffi.Pointer<ffi.Void> file1,
-  ffi.Pointer<ffi.Void> file2,
-);
-
-typedef Native_clang_File_tryGetRealPathName = CXString Function(
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_File_tryGetRealPathName = CXString Function(
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef Native_clang_getNullLocation = CXSourceLocation Function();
-
-typedef _dart_clang_getNullLocation = CXSourceLocation Function();
-
-typedef Native_clang_equalLocations = ffi.Uint32 Function(
-  CXSourceLocation loc1,
-  CXSourceLocation loc2,
-);
-
-typedef _dart_clang_equalLocations = int Function(
-  CXSourceLocation loc1,
-  CXSourceLocation loc2,
-);
-
-typedef Native_clang_getLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Uint32 line,
-  ffi.Uint32 column,
-);
-
-typedef _dart_clang_getLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  int line,
-  int column,
-);
-
-typedef Native_clang_getLocationForOffset = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Uint32 offset,
-);
-
-typedef _dart_clang_getLocationForOffset = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  int offset,
-);
-
-typedef Native_clang_Location_isInSystemHeader = ffi.Int32 Function(
-  CXSourceLocation location,
-);
-
-typedef _dart_clang_Location_isInSystemHeader = int Function(
-  CXSourceLocation location,
-);
-
-typedef Native_clang_Location_isFromMainFile = ffi.Int32 Function(
-  CXSourceLocation location,
-);
-
-typedef _dart_clang_Location_isFromMainFile = int Function(
-  CXSourceLocation location,
-);
-
-typedef Native_clang_getNullRange = CXSourceRange Function();
-
-typedef _dart_clang_getNullRange = CXSourceRange Function();
-
-typedef Native_clang_getRange = CXSourceRange Function(
-  CXSourceLocation begin,
-  CXSourceLocation end,
-);
-
-typedef _dart_clang_getRange = CXSourceRange Function(
-  CXSourceLocation begin,
-  CXSourceLocation end,
-);
-
-typedef Native_clang_equalRanges = ffi.Uint32 Function(
-  CXSourceRange range1,
-  CXSourceRange range2,
-);
-
-typedef _dart_clang_equalRanges = int Function(
-  CXSourceRange range1,
-  CXSourceRange range2,
-);
-
-typedef Native_clang_Range_isNull = ffi.Int32 Function(
-  CXSourceRange range,
-);
-
-typedef _dart_clang_Range_isNull = int Function(
-  CXSourceRange range,
-);
-
-typedef Native_clang_getExpansionLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getExpansionLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef Native_clang_getPresumedLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<CXString> filename,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-);
-
-typedef _dart_clang_getPresumedLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<CXString> filename,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-);
-
-typedef Native_clang_getInstantiationLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getInstantiationLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef Native_clang_getSpellingLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getSpellingLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef Native_clang_getFileLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getFileLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef Native_clang_getRangeStart = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef _dart_clang_getRangeStart = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef Native_clang_getRangeEnd = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef _dart_clang_getRangeEnd = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef Native_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef Native_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-typedef _dart_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-typedef Native_clang_disposeSourceRangeList = ffi.Void Function(
-  ffi.Pointer<CXSourceRangeList> ranges,
-);
-
-typedef _dart_clang_disposeSourceRangeList = void Function(
-  ffi.Pointer<CXSourceRangeList> ranges,
-);
-
-typedef Native_clang_getNumDiagnosticsInSet = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _dart_clang_getNumDiagnosticsInSet = int Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef Native_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Diags,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Diags,
-  int Index,
-);
-
-typedef Native_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> file,
-  ffi.Pointer<ffi.Int32> error,
-  ffi.Pointer<CXString> errorString,
-);
-
-typedef _dart_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> file,
-  ffi.Pointer<ffi.Int32> error,
-  ffi.Pointer<CXString> errorString,
-);
-
-typedef Native_clang_disposeDiagnosticSet = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _dart_clang_disposeDiagnosticSet = void Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef Native_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> D,
-);
-
-typedef _dart_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> D,
-);
-
-typedef Native_clang_getNumDiagnostics = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getNumDiagnostics = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef Native_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-  int Index,
-);
-
-typedef Native_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef Native_clang_disposeDiagnostic = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_disposeDiagnostic = void Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef Native_clang_formatDiagnostic = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  ffi.Uint32 Options,
-);
-
-typedef _dart_clang_formatDiagnostic = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  int Options,
-);
-
-typedef Native_clang_defaultDiagnosticDisplayOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultDiagnosticDisplayOptions = int Function();
-
-typedef Native_clang_getDiagnosticSeverity = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticSeverity = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_getDiagnosticLocation = CXSourceLocation Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticLocation = CXSourceLocation Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_getDiagnosticSpelling = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticSpelling = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_getDiagnosticOption = CXString Function(
-  ffi.Pointer<ffi.Void> Diag,
-  ffi.Pointer<CXString> Disable,
-);
-
-typedef _dart_clang_getDiagnosticOption = CXString Function(
-  ffi.Pointer<ffi.Void> Diag,
-  ffi.Pointer<CXString> Disable,
-);
-
-typedef Native_clang_getDiagnosticCategory = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticCategory = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_getDiagnosticCategoryName = CXString Function(
-  ffi.Uint32 Category,
-);
-
-typedef _dart_clang_getDiagnosticCategoryName = CXString Function(
-  int Category,
-);
-
-typedef Native_clang_getDiagnosticCategoryText = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticCategoryText = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_getDiagnosticNumRanges = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticNumRanges = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_getDiagnosticRange = CXSourceRange Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  ffi.Uint32 Range,
-);
-
-typedef _dart_clang_getDiagnosticRange = CXSourceRange Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  int Range,
-);
-
-typedef Native_clang_getDiagnosticNumFixIts = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_getDiagnosticNumFixIts = int Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef Native_clang_getDiagnosticFixIt = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  ffi.Uint32 FixIt,
-  ffi.Pointer<CXSourceRange> ReplacementRange,
-);
-
-typedef _dart_clang_getDiagnosticFixIt = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  int FixIt,
-  ffi.Pointer<CXSourceRange> ReplacementRange,
-);
-
-typedef Native_clang_getTranslationUnitSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef _dart_clang_getTranslationUnitSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef Native_clang_createTranslationUnitFromSourceFile
-    = ffi.Pointer<CXTranslationUnitImpl> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Int32 num_clang_command_line_args,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-);
-
-typedef _dart_clang_createTranslationUnitFromSourceFile
-    = ffi.Pointer<CXTranslationUnitImpl> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  int num_clang_command_line_args,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
-  int num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-);
-
-typedef Native_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-);
-
-typedef _dart_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-);
-
-typedef Native_clang_createTranslationUnit2 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_createTranslationUnit2 = int Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef Native_clang_defaultEditingTranslationUnitOptions = ffi.Uint32
-    Function();
-
-typedef _dart_clang_defaultEditingTranslationUnitOptions = int Function();
-
-typedef Native_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-);
-
-typedef Native_clang_parseTranslationUnit2 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_parseTranslationUnit2 = int Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef Native_clang_parseTranslationUnit2FullArgv = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_parseTranslationUnit2FullArgv = int Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef Native_clang_defaultSaveOptions = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_defaultSaveOptions = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef Native_clang_saveTranslationUnit = ffi.Int32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> FileName,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_saveTranslationUnit = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> FileName,
-  int options,
-);
-
-typedef Native_clang_suspendTranslationUnit = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_suspendTranslationUnit = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef Native_clang_disposeTranslationUnit = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_disposeTranslationUnit = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef Native_clang_defaultReparseOptions = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_defaultReparseOptions = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef Native_clang_reparseTranslationUnit = ffi.Int32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_reparseTranslationUnit = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  int num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int options,
-);
-
-typedef Native_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
-  ffi.Int32 kind,
-);
-
-typedef _dart_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
-  int kind,
-);
-
-typedef Native_clang_getCXTUResourceUsage = CXTUResourceUsage Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_getCXTUResourceUsage = CXTUResourceUsage Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef Native_clang_disposeCXTUResourceUsage = ffi.Void Function(
-  CXTUResourceUsage usage,
-);
-
-typedef _dart_clang_disposeCXTUResourceUsage = void Function(
-  CXTUResourceUsage usage,
-);
-
-typedef Native_clang_getTranslationUnitTargetInfo
-    = ffi.Pointer<CXTargetInfoImpl> Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef _dart_clang_getTranslationUnitTargetInfo = ffi.Pointer<CXTargetInfoImpl>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef Native_clang_TargetInfo_dispose = ffi.Void Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_dispose = void Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef Native_clang_TargetInfo_getTriple = CXString Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_getTriple = CXString Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef Native_clang_TargetInfo_getPointerWidth = ffi.Int32 Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_getPointerWidth = int Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef Native_clang_getNullCursor = CXCursor Function();
-
-typedef _dart_clang_getNullCursor = CXCursor Function();
-
-typedef Native_clang_getTranslationUnitCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_getTranslationUnitCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef Native_clang_equalCursors = ffi.Uint32 Function(
-  CXCursor arg0,
-  CXCursor arg1,
-);
-
-typedef _dart_clang_equalCursors = int Function(
-  CXCursor arg0,
-  CXCursor arg1,
-);
-
-typedef Native_clang_Cursor_isNull = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_Cursor_isNull = int Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_hashCursor = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_hashCursor = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getCursorKind = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorKind = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_isDeclaration = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isDeclaration = int Function(
-  int arg0,
-);
-
-typedef Native_clang_isInvalidDeclaration = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_isInvalidDeclaration = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_isReference = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isReference = int Function(
-  int arg0,
-);
-
-typedef Native_clang_isExpression = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isExpression = int Function(
-  int arg0,
-);
-
-typedef Native_clang_isStatement = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isStatement = int Function(
-  int arg0,
-);
-
-typedef Native_clang_isAttribute = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isAttribute = int Function(
-  int arg0,
-);
-
-typedef Native_clang_Cursor_hasAttrs = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_hasAttrs = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_isInvalid = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isInvalid = int Function(
-  int arg0,
-);
-
-typedef Native_clang_isTranslationUnit = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isTranslationUnit = int Function(
-  int arg0,
-);
-
-typedef Native_clang_isPreprocessing = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isPreprocessing = int Function(
-  int arg0,
-);
-
-typedef Native_clang_isUnexposed = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isUnexposed = int Function(
-  int arg0,
-);
-
-typedef Native_clang_getCursorLinkage = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorLinkage = int Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCursorVisibility = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorVisibility = int Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCursorAvailability = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorAvailability = int Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCursorPlatformAvailability = ffi.Int32 Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Int32> always_deprecated,
-  ffi.Pointer<CXString> deprecated_message,
-  ffi.Pointer<ffi.Int32> always_unavailable,
-  ffi.Pointer<CXString> unavailable_message,
-  ffi.Pointer<CXPlatformAvailability> availability,
-  ffi.Int32 availability_size,
-);
-
-typedef _dart_clang_getCursorPlatformAvailability = int Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Int32> always_deprecated,
-  ffi.Pointer<CXString> deprecated_message,
-  ffi.Pointer<ffi.Int32> always_unavailable,
-  ffi.Pointer<CXString> unavailable_message,
-  ffi.Pointer<CXPlatformAvailability> availability,
-  int availability_size,
-);
-
-typedef Native_clang_disposeCXPlatformAvailability = ffi.Void Function(
-  ffi.Pointer<CXPlatformAvailability> availability,
-);
-
-typedef _dart_clang_disposeCXPlatformAvailability = void Function(
-  ffi.Pointer<CXPlatformAvailability> availability,
-);
-
-typedef Native_clang_getCursorLanguage = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorLanguage = int Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCursorTLSKind = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorTLSKind = int Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_Cursor_getTranslationUnit
-    = ffi.Pointer<CXTranslationUnitImpl> Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getTranslationUnit
-    = ffi.Pointer<CXTranslationUnitImpl> Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl>
-    Function();
-
-typedef _dart_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl> Function();
-
-typedef Native_clang_disposeCXCursorSet = ffi.Void Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-);
-
-typedef _dart_clang_disposeCXCursorSet = void Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-);
-
-typedef Native_clang_CXCursorSet_contains = ffi.Uint32 Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef _dart_clang_CXCursorSet_contains = int Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef Native_clang_CXCursorSet_insert = ffi.Uint32 Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef _dart_clang_CXCursorSet_insert = int Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCursorSemanticParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorSemanticParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCursorLexicalParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorLexicalParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getOverriddenCursors = ffi.Void Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Pointer<CXCursor>> overridden,
-  ffi.Pointer<ffi.Uint32> num_overridden,
-);
-
-typedef _dart_clang_getOverriddenCursors = void Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Pointer<CXCursor>> overridden,
-  ffi.Pointer<ffi.Uint32> num_overridden,
-);
-
-typedef Native_clang_disposeOverriddenCursors = ffi.Void Function(
-  ffi.Pointer<CXCursor> overridden,
-);
-
-typedef _dart_clang_disposeOverriddenCursors = void Function(
-  ffi.Pointer<CXCursor> overridden,
-);
-
-typedef Native_clang_getIncludedFile = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getIncludedFile = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXSourceLocation arg1,
-);
-
-typedef _dart_clang_getCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXSourceLocation arg1,
-);
-
-typedef Native_clang_getCursorLocation = CXSourceLocation Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorLocation = CXSourceLocation Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getCursorExtent = CXSourceRange Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorExtent = CXSourceRange Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getCursorType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getCursorType = CXType Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getTypeSpelling = CXString Function(
-  CXType CT,
-);
-
-typedef _dart_clang_getTypeSpelling = CXString Function(
-  CXType CT,
-);
-
-typedef Native_clang_getTypedefDeclUnderlyingType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getTypedefDeclUnderlyingType = CXType Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getEnumDeclIntegerType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getEnumDeclIntegerType = CXType Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getEnumConstantDeclValue = ffi.Int64 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getEnumConstantDeclValue = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getEnumConstantDeclUnsignedValue = ffi.Uint64 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getEnumConstantDeclUnsignedValue = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getFieldDeclBitWidth = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getFieldDeclBitWidth = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getNumArguments = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getNumArguments = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getArgument = CXCursor Function(
-  CXCursor C,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Cursor_getArgument = CXCursor Function(
-  CXCursor C,
-  int i,
-);
-
-typedef Native_clang_Cursor_getNumTemplateArguments = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getNumTemplateArguments = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getTemplateArgumentKind = ffi.Int32 Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentKind = int Function(
-  CXCursor C,
-  int I,
-);
-
-typedef Native_clang_Cursor_getTemplateArgumentType = CXType Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentType = CXType Function(
-  CXCursor C,
-  int I,
-);
-
-typedef Native_clang_Cursor_getTemplateArgumentValue = ffi.Int64 Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentValue = int Function(
-  CXCursor C,
-  int I,
-);
-
-typedef Native_clang_Cursor_getTemplateArgumentUnsignedValue = ffi.Uint64
-    Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentUnsignedValue = int Function(
-  CXCursor C,
-  int I,
-);
-
-typedef Native_clang_equalTypes = ffi.Uint32 Function(
-  CXType A,
-  CXType B,
-);
-
-typedef _dart_clang_equalTypes = int Function(
-  CXType A,
-  CXType B,
-);
-
-typedef Native_clang_getCanonicalType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getCanonicalType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_isConstQualifiedType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isConstQualifiedType = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Cursor_isMacroFunctionLike = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isMacroFunctionLike = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isMacroBuiltin = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isMacroBuiltin = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isFunctionInlined = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isFunctionInlined = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_isVolatileQualifiedType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isVolatileQualifiedType = int Function(
-  CXType T,
-);
-
-typedef Native_clang_isRestrictQualifiedType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isRestrictQualifiedType = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getAddressSpace = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getAddressSpace = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getTypedefName = CXString Function(
-  CXType CT,
-);
-
-typedef _dart_clang_getTypedefName = CXString Function(
-  CXType CT,
-);
-
-typedef Native_clang_getPointeeType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getPointeeType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_getTypeDeclaration = CXCursor Function(
-  CXType T,
-);
-
-typedef _dart_clang_getTypeDeclaration = CXCursor Function(
-  CXType T,
-);
-
-typedef Native_clang_getDeclObjCTypeEncoding = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getDeclObjCTypeEncoding = CXString Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Type_getObjCEncoding = CXString Function(
-  CXType type,
-);
-
-typedef _dart_clang_Type_getObjCEncoding = CXString Function(
-  CXType type,
-);
-
-typedef Native_clang_getTypeKindSpelling = CXString Function(
-  ffi.Int32 K,
-);
-
-typedef _dart_clang_getTypeKindSpelling = CXString Function(
-  int K,
-);
-
-typedef Native_clang_getFunctionTypeCallingConv = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getFunctionTypeCallingConv = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getResultType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getResultType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_getExceptionSpecificationType = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getExceptionSpecificationType = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getNumArgTypes = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getNumArgTypes = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getArgType = CXType Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_getArgType = CXType Function(
-  CXType T,
-  int i,
-);
-
-typedef Native_clang_Type_getObjCObjectBaseType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getObjCObjectBaseType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getNumObjCProtocolRefs = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNumObjCProtocolRefs = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getObjCProtocolDecl = CXCursor Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Type_getObjCProtocolDecl = CXCursor Function(
-  CXType T,
-  int i,
-);
-
-typedef Native_clang_Type_getNumObjCTypeArgs = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNumObjCTypeArgs = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getObjCTypeArg = CXType Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Type_getObjCTypeArg = CXType Function(
-  CXType T,
-  int i,
-);
-
-typedef Native_clang_isFunctionTypeVariadic = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isFunctionTypeVariadic = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getCursorResultType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getCursorResultType = CXType Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getCursorExceptionSpecificationType = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getCursorExceptionSpecificationType = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_isPODType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isPODType = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getElementType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getElementType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_getNumElements = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getNumElements = int Function(
-  CXType T,
-);
-
-typedef Native_clang_getArrayElementType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getArrayElementType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_getArraySize = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getArraySize = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getNamedType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNamedType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_isTransparentTagTypedef = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_isTransparentTagTypedef = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getNullability = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNullability = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getAlignOf = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getAlignOf = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getClassType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getClassType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getSizeOf = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getSizeOf = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getOffsetOf = ffi.Int64 Function(
-  CXType T,
-  ffi.Pointer<ffi.Int8> S,
-);
-
-typedef _dart_clang_Type_getOffsetOf = int Function(
-  CXType T,
-  ffi.Pointer<ffi.Int8> S,
-);
-
-typedef Native_clang_Type_getModifiedType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getModifiedType = CXType Function(
-  CXType T,
-);
-
-typedef Native_clang_Cursor_getOffsetOfField = ffi.Int64 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getOffsetOfField = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isAnonymous = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isAnonymous = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isAnonymousRecordDecl = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isAnonymousRecordDecl = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isInlineNamespace = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isInlineNamespace = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Type_getNumTemplateArguments = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNumTemplateArguments = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Type_getTemplateArgumentAsType = CXType Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Type_getTemplateArgumentAsType = CXType Function(
-  CXType T,
-  int i,
-);
-
-typedef Native_clang_Type_getCXXRefQualifier = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getCXXRefQualifier = int Function(
-  CXType T,
-);
-
-typedef Native_clang_Cursor_isBitField = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isBitField = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_isVirtualBase = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_isVirtualBase = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getCXXAccessSpecifier = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCXXAccessSpecifier = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_Cursor_getStorageClass = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getStorageClass = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getNumOverloadedDecls = ffi.Uint32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getNumOverloadedDecls = int Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getOverloadedDecl = CXCursor Function(
-  CXCursor cursor,
-  ffi.Uint32 index,
-);
-
-typedef _dart_clang_getOverloadedDecl = CXCursor Function(
-  CXCursor cursor,
-  int index,
-);
-
-typedef Native_clang_getIBOutletCollectionType = CXType Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getIBOutletCollectionType = CXType Function(
-  CXCursor arg0,
-);
-
-typedef CXCursorVisitor = ffi.Int32 Function(
-  CXCursor,
-  CXCursor,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef Native_clang_visitChildren = ffi.Uint32 Function(
-  CXCursor parent,
-  ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_visitChildren = int Function(
-  CXCursor parent,
-  ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef Native_clang_getCursorUSR = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorUSR = CXString Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_constructUSR_ObjCClass = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-);
-
-typedef _dart_clang_constructUSR_ObjCClass = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-);
-
-typedef Native_clang_constructUSR_ObjCCategory = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-  ffi.Pointer<ffi.Int8> category_name,
-);
-
-typedef _dart_clang_constructUSR_ObjCCategory = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-  ffi.Pointer<ffi.Int8> category_name,
-);
-
-typedef Native_clang_constructUSR_ObjCProtocol = CXString Function(
-  ffi.Pointer<ffi.Int8> protocol_name,
-);
-
-typedef _dart_clang_constructUSR_ObjCProtocol = CXString Function(
-  ffi.Pointer<ffi.Int8> protocol_name,
-);
-
-typedef Native_clang_constructUSR_ObjCIvar = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  CXString classUSR,
-);
-
-typedef _dart_clang_constructUSR_ObjCIvar = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  CXString classUSR,
-);
-
-typedef Native_clang_constructUSR_ObjCMethod = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Uint32 isInstanceMethod,
-  CXString classUSR,
-);
-
-typedef _dart_clang_constructUSR_ObjCMethod = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  int isInstanceMethod,
-  CXString classUSR,
-);
-
-typedef Native_clang_constructUSR_ObjCProperty = CXString Function(
-  ffi.Pointer<ffi.Int8> property,
-  CXString classUSR,
-);
-
-typedef _dart_clang_constructUSR_ObjCProperty = CXString Function(
-  ffi.Pointer<ffi.Int8> property,
-  CXString classUSR,
-);
-
-typedef Native_clang_getCursorSpelling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorSpelling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_Cursor_getSpellingNameRange = CXSourceRange Function(
-  CXCursor arg0,
-  ffi.Uint32 pieceIndex,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_Cursor_getSpellingNameRange = CXSourceRange Function(
-  CXCursor arg0,
-  int pieceIndex,
-  int options,
-);
-
-typedef Native_clang_PrintingPolicy_getProperty = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> Policy,
-  ffi.Int32 Property,
-);
-
-typedef _dart_clang_PrintingPolicy_getProperty = int Function(
-  ffi.Pointer<ffi.Void> Policy,
-  int Property,
-);
-
-typedef Native_clang_PrintingPolicy_setProperty = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Policy,
-  ffi.Int32 Property,
-  ffi.Uint32 Value,
-);
-
-typedef _dart_clang_PrintingPolicy_setProperty = void Function(
-  ffi.Pointer<ffi.Void> Policy,
-  int Property,
-  int Value,
-);
-
-typedef Native_clang_getCursorPrintingPolicy = ffi.Pointer<ffi.Void> Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorPrintingPolicy = ffi.Pointer<ffi.Void> Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_PrintingPolicy_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef _dart_clang_PrintingPolicy_dispose = void Function(
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef Native_clang_getCursorPrettyPrinted = CXString Function(
-  CXCursor Cursor,
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef _dart_clang_getCursorPrettyPrinted = CXString Function(
-  CXCursor Cursor,
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef Native_clang_getCursorDisplayName = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorDisplayName = CXString Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getCursorReferenced = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorReferenced = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getCursorDefinition = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorDefinition = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_isCursorDefinition = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_isCursorDefinition = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_getCanonicalCursor = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCanonicalCursor = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_Cursor_getObjCSelectorIndex = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getObjCSelectorIndex = int Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_Cursor_isDynamicCall = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isDynamicCall = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getReceiverType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getReceiverType = CXType Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getObjCPropertyAttributes = ffi.Uint32 Function(
-  CXCursor C,
-  ffi.Uint32 reserved,
-);
-
-typedef _dart_clang_Cursor_getObjCPropertyAttributes = int Function(
-  CXCursor C,
-  int reserved,
-);
-
-typedef Native_clang_Cursor_getObjCPropertyGetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getObjCPropertyGetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getObjCPropertySetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getObjCPropertySetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getObjCDeclQualifiers = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getObjCDeclQualifiers = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isObjCOptional = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isObjCOptional = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isVariadic = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isVariadic = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_isExternalSymbol = ffi.Uint32 Function(
-  CXCursor C,
-  ffi.Pointer<CXString> language,
-  ffi.Pointer<CXString> definedIn,
-  ffi.Pointer<ffi.Uint32> isGenerated,
-);
-
-typedef _dart_clang_Cursor_isExternalSymbol = int Function(
-  CXCursor C,
-  ffi.Pointer<CXString> language,
-  ffi.Pointer<CXString> definedIn,
-  ffi.Pointer<ffi.Uint32> isGenerated,
-);
-
-typedef Native_clang_Cursor_getCommentRange = CXSourceRange Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getCommentRange = CXSourceRange Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getRawCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getRawCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getBriefCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getBriefCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef Native_clang_Cursor_getMangling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getMangling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_Cursor_getCXXManglings = ffi.Pointer<CXStringSet> Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getCXXManglings = ffi.Pointer<CXStringSet> Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_Cursor_getObjCManglings = ffi.Pointer<CXStringSet>
-    Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getObjCManglings = ffi.Pointer<CXStringSet> Function(
-  CXCursor arg0,
-);
-
-typedef Native_clang_Cursor_getModule = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getModule = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef Native_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef Native_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef Native_clang_Module_getName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef Native_clang_Module_getFullName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getFullName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef Native_clang_Module_isSystem = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_isSystem = int Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef Native_clang_Module_getNumTopLevelHeaders = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getNumTopLevelHeaders = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef Native_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-  int Index,
-);
-
-typedef Native_clang_CXXConstructor_isConvertingConstructor = ffi.Uint32
-    Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isConvertingConstructor = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXConstructor_isCopyConstructor = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isCopyConstructor = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXConstructor_isDefaultConstructor = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isDefaultConstructor = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXConstructor_isMoveConstructor = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isMoveConstructor = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXField_isMutable = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXField_isMutable = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXMethod_isDefaulted = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isDefaulted = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXMethod_isPureVirtual = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isPureVirtual = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXMethod_isStatic = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isStatic = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXMethod_isVirtual = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isVirtual = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXRecord_isAbstract = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXRecord_isAbstract = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_EnumDecl_isScoped = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_EnumDecl_isScoped = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_CXXMethod_isConst = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isConst = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getTemplateCursorKind = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getTemplateCursorKind = int Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getSpecializedCursorTemplate = CXCursor Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getSpecializedCursorTemplate = CXCursor Function(
-  CXCursor C,
-);
-
-typedef Native_clang_getCursorReferenceNameRange = CXSourceRange Function(
-  CXCursor C,
-  ffi.Uint32 NameFlags,
-  ffi.Uint32 PieceIndex,
-);
-
-typedef _dart_clang_getCursorReferenceNameRange = CXSourceRange Function(
-  CXCursor C,
-  int NameFlags,
-  int PieceIndex,
-);
-
-typedef Native_clang_getToken = ffi.Pointer<CXToken> Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceLocation Location,
-);
-
-typedef _dart_clang_getToken = ffi.Pointer<CXToken> Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceLocation Location,
-);
-
-typedef Native_clang_getTokenKind = ffi.Int32 Function(
-  CXToken arg0,
-);
-
-typedef _dart_clang_getTokenKind = int Function(
-  CXToken arg0,
-);
-
-typedef Native_clang_getTokenSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _dart_clang_getTokenSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef Native_clang_getTokenLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _dart_clang_getTokenLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef Native_clang_getTokenExtent = CXSourceRange Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _dart_clang_getTokenExtent = CXSourceRange Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef Native_clang_tokenize = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceRange Range,
-  ffi.Pointer<ffi.Pointer<CXToken>> Tokens,
-  ffi.Pointer<ffi.Uint32> NumTokens,
-);
-
-typedef _dart_clang_tokenize = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceRange Range,
-  ffi.Pointer<ffi.Pointer<CXToken>> Tokens,
-  ffi.Pointer<ffi.Uint32> NumTokens,
-);
-
-typedef Native_clang_annotateTokens = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  ffi.Uint32 NumTokens,
-  ffi.Pointer<CXCursor> Cursors,
-);
-
-typedef _dart_clang_annotateTokens = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  int NumTokens,
-  ffi.Pointer<CXCursor> Cursors,
-);
-
-typedef Native_clang_disposeTokens = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  ffi.Uint32 NumTokens,
-);
-
-typedef _dart_clang_disposeTokens = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  int NumTokens,
-);
-
-typedef Native_clang_getCursorKindSpelling = CXString Function(
-  ffi.Int32 Kind,
-);
-
-typedef _dart_clang_getCursorKindSpelling = CXString Function(
-  int Kind,
-);
-
-typedef Native_clang_getDefinitionSpellingAndExtent = ffi.Void Function(
-  CXCursor arg0,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> startBuf,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> endBuf,
-  ffi.Pointer<ffi.Uint32> startLine,
-  ffi.Pointer<ffi.Uint32> startColumn,
-  ffi.Pointer<ffi.Uint32> endLine,
-  ffi.Pointer<ffi.Uint32> endColumn,
-);
-
-typedef _dart_clang_getDefinitionSpellingAndExtent = void Function(
-  CXCursor arg0,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> startBuf,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> endBuf,
-  ffi.Pointer<ffi.Uint32> startLine,
-  ffi.Pointer<ffi.Uint32> startColumn,
-  ffi.Pointer<ffi.Uint32> endLine,
-  ffi.Pointer<ffi.Uint32> endColumn,
-);
-
-typedef Native_clang_enableStackTraces = ffi.Void Function();
-
-typedef _dart_clang_enableStackTraces = void Function();
-
-typedef _typedefC_1 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef Native_clang_executeOnThread = ffi.Void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
-  ffi.Pointer<ffi.Void> user_data,
-  ffi.Uint32 stack_size,
-);
-
-typedef _dart_clang_executeOnThread = void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
-  ffi.Pointer<ffi.Void> user_data,
-  int stack_size,
-);
-
-typedef Native_clang_getCompletionChunkKind = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkKind = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int chunk_number,
-);
-
-typedef Native_clang_getCompletionChunkText = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkText = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int chunk_number,
-);
-
-typedef Native_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
-    Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
-    Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int chunk_number,
-);
-
-typedef Native_clang_getNumCompletionChunks = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getNumCompletionChunks = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef Native_clang_getCompletionPriority = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionPriority = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef Native_clang_getCompletionAvailability = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionAvailability = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef Native_clang_getCompletionNumAnnotations = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionNumAnnotations = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef Native_clang_getCompletionAnnotation = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 annotation_number,
-);
-
-typedef _dart_clang_getCompletionAnnotation = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int annotation_number,
-);
-
-typedef Native_clang_getCompletionParent = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Pointer<ffi.Int32> kind,
-);
-
-typedef _dart_clang_getCompletionParent = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Pointer<ffi.Int32> kind,
-);
-
-typedef Native_clang_getCompletionBriefComment = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionBriefComment = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef Native_clang_getCursorCompletionString = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorCompletionString = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef Native_clang_getCompletionNumFixIts = ffi.Uint32 Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  ffi.Uint32 completion_index,
-);
-
-typedef _dart_clang_getCompletionNumFixIts = int Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  int completion_index,
-);
-
-typedef Native_clang_getCompletionFixIt = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  ffi.Uint32 completion_index,
-  ffi.Uint32 fixit_index,
-  ffi.Pointer<CXSourceRange> replacement_range,
-);
-
-typedef _dart_clang_getCompletionFixIt = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  int completion_index,
-  int fixit_index,
-  ffi.Pointer<CXSourceRange> replacement_range,
-);
-
-typedef Native_clang_defaultCodeCompleteOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultCodeCompleteOptions = int Function();
-
-typedef Native_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> complete_filename,
-  ffi.Uint32 complete_line,
-  ffi.Uint32 complete_column,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> complete_filename,
-  int complete_line,
-  int complete_column,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-);
-
-typedef Native_clang_sortCodeCompletionResults = ffi.Void Function(
-  ffi.Pointer<CXCompletionResult> Results,
-  ffi.Uint32 NumResults,
-);
-
-typedef _dart_clang_sortCodeCompletionResults = void Function(
-  ffi.Pointer<CXCompletionResult> Results,
-  int NumResults,
-);
-
-typedef Native_clang_disposeCodeCompleteResults = ffi.Void Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_disposeCodeCompleteResults = void Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef Native_clang_codeCompleteGetNumDiagnostics = ffi.Uint32 Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetNumDiagnostics = int Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef Native_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  int Index,
-);
-
-typedef Native_clang_codeCompleteGetContexts = ffi.Uint64 Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetContexts = int Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef Native_clang_codeCompleteGetContainerKind = ffi.Int32 Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  ffi.Pointer<ffi.Uint32> IsIncomplete,
-);
-
-typedef _dart_clang_codeCompleteGetContainerKind = int Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  ffi.Pointer<ffi.Uint32> IsIncomplete,
-);
-
-typedef Native_clang_codeCompleteGetContainerUSR = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetContainerUSR = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef Native_clang_codeCompleteGetObjCSelector = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetObjCSelector = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef Native_clang_getClangVersion = CXString Function();
-
-typedef _dart_clang_getClangVersion = CXString Function();
-
-typedef Native_clang_toggleCrashRecovery = ffi.Void Function(
-  ffi.Uint32 isEnabled,
-);
-
-typedef _dart_clang_toggleCrashRecovery = void Function(
-  int isEnabled,
-);
-
-typedef CXInclusionVisitor = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXSourceLocation>,
-  ffi.Uint32,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef Native_clang_getInclusions = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_getInclusions = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef Native_clang_Cursor_Evaluate = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_Evaluate = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef Native_clang_EvalResult_getKind = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getKind = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_EvalResult_getAsInt = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsInt = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_EvalResult_getAsLongLong = ffi.Int64 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsLongLong = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_EvalResult_isUnsignedInt = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_isUnsignedInt = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_EvalResult_getAsUnsigned = ffi.Uint64 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsUnsigned = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_EvalResult_getAsDouble = ffi.Double Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsDouble = double Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_EvalResult_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_dispose = void Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef Native_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> path,
-);
-
-typedef _dart_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> path,
-);
-
-typedef Native_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
-  ffi.Uint32 numFiles,
-);
-
-typedef _dart_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
-  int numFiles,
-);
-
-typedef Native_clang_remap_getNumFiles = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_remap_getNumFiles = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_remap_getFilenames = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Uint32 index,
-  ffi.Pointer<CXString> original,
-  ffi.Pointer<CXString> transformed,
-);
-
-typedef _dart_clang_remap_getFilenames = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  int index,
-  ffi.Pointer<CXString> original,
-  ffi.Pointer<CXString> transformed,
-);
-
-typedef Native_clang_remap_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_remap_dispose = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_findReferencesInFile = ffi.Int32 Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef _dart_clang_findReferencesInFile = int Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef Native_clang_findIncludesInFile = ffi.Int32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef _dart_clang_findIncludesInFile = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef Native_clang_index_isEntityObjCContainerKind = ffi.Int32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_index_isEntityObjCContainerKind = int Function(
-  int arg0,
-);
-
-typedef Native_clang_index_getObjCContainerDeclInfo
-    = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCContainerDeclInfo
-    = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef Native_clang_index_getObjCInterfaceDeclInfo
-    = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCInterfaceDeclInfo
-    = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef Native_clang_index_getObjCCategoryDeclInfo
-    = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCCategoryDeclInfo
-    = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef Native_clang_index_getObjCProtocolRefListInfo
-    = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCProtocolRefListInfo
-    = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef Native_clang_index_getObjCPropertyDeclInfo
-    = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCPropertyDeclInfo
-    = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef Native_clang_index_getIBOutletCollectionAttrInfo
-    = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
-  ffi.Pointer<CXIdxAttrInfo> arg0,
-);
-
-typedef _dart_clang_index_getIBOutletCollectionAttrInfo
-    = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
-  ffi.Pointer<CXIdxAttrInfo> arg0,
-);
-
-typedef Native_clang_index_getCXXClassDeclInfo
-    = ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getCXXClassDeclInfo
-    = ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef Native_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-);
-
-typedef _dart_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-);
-
-typedef Native_clang_index_setClientContainer = ffi.Void Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_index_setClientContainer = void Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef Native_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-);
-
-typedef _dart_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-);
-
-typedef Native_clang_index_setClientEntity = ffi.Void Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_index_setClientEntity = void Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef Native_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-);
-
-typedef _dart_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-);
-
-typedef Native_clang_IndexAction_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_IndexAction_dispose = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef Native_clang_indexSourceFile = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  ffi.Uint32 index_callbacks_size,
-  ffi.Uint32 index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  ffi.Uint32 TU_options,
-);
-
-typedef _dart_clang_indexSourceFile = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  int index_callbacks_size,
-  int index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  int TU_options,
-);
-
-typedef Native_clang_indexSourceFileFullArgv = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  ffi.Uint32 index_callbacks_size,
-  ffi.Uint32 index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  ffi.Uint32 TU_options,
-);
-
-typedef _dart_clang_indexSourceFileFullArgv = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  int index_callbacks_size,
-  int index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  int TU_options,
-);
-
-typedef Native_clang_indexTranslationUnit = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  ffi.Uint32 index_callbacks_size,
-  ffi.Uint32 index_options,
-  ffi.Pointer<CXTranslationUnitImpl> arg5,
-);
-
-typedef _dart_clang_indexTranslationUnit = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  int index_callbacks_size,
-  int index_options,
-  ffi.Pointer<CXTranslationUnitImpl> arg5,
-);
-
-typedef Native_clang_indexLoc_getFileLocation = ffi.Void Function(
-  CXIdxLoc loc,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> indexFile,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_indexLoc_getFileLocation = void Function(
-  CXIdxLoc loc,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> indexFile,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef Native_clang_indexLoc_getCXSourceLocation = CXSourceLocation Function(
-  CXIdxLoc loc,
-);
-
-typedef _dart_clang_indexLoc_getCXSourceLocation = CXSourceLocation Function(
-  CXIdxLoc loc,
-);
-
-typedef CXFieldVisitor = ffi.Int32 Function(
-  CXCursor,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef Native_clang_Type_visitFields = ffi.Uint32 Function(
-  CXType T,
-  ffi.Pointer<ffi.NativeFunction<CXFieldVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_Type_visitFields = int Function(
-  CXType T,
-  ffi.Pointer<ffi.NativeFunction<CXFieldVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _typedefC_2 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  CXCursor,
-  CXSourceRange,
-);
-
-typedef _typedefC_3 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_4 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_5 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_6 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxIncludedFileInfo>,
-);
-
-typedef _typedefC_7 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxImportedASTFileInfo>,
-);
-
-typedef _typedefC_8 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_9 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxDeclInfo>,
-);
-
-typedef _typedefC_10 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxEntityRefInfo>,
-);
diff --git a/example/libclang-example/pubspec.yaml b/example/libclang-example/pubspec.yaml
index bf0695e..f65a623 100644
--- a/example/libclang-example/pubspec.yaml
+++ b/example/libclang-example/pubspec.yaml
@@ -5,7 +5,7 @@
 name: libclang_example
 
 environment:
-  sdk: '>=2.12.0 <3.0.0'
+  sdk: '>=2.13.0 <3.0.0'
 
 dev_dependencies:
   ffigen:
@@ -62,6 +62,11 @@
     unsigned long long: 8
     enum: 4
 
+  # These can be used to map any typedef to a specific native type.
+  typedef-map:
+    'size_t': 'IntPtr'
+    'time_t': 'Int64'
+
   # Default is 'NativeLibrary'
   name: 'LibClang'
 
diff --git a/example/simple/generated_bindings.dart b/example/simple/generated_bindings.dart
index 1674882..a964f50 100644
--- a/example/simple/generated_bindings.dart
+++ b/example/simple/generated_bindings.dart
@@ -30,8 +30,10 @@
     );
   }
 
-  late final _sum_ptr = _lookup<ffi.NativeFunction<_c_sum>>('sum');
-  late final _dart_sum _sum = _sum_ptr.asFunction<_dart_sum>();
+  late final _sum_ptr =
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32, ffi.Int32)>>(
+          'sum');
+  late final _sum = _sum_ptr.asFunction<int Function(int, int)>();
 
   /// Subtracts 2 integers.
   int subtract(
@@ -44,10 +46,11 @@
     );
   }
 
-  late final _subtract_ptr =
-      _lookup<ffi.NativeFunction<_c_subtract>>('subtract');
-  late final _dart_subtract _subtract =
-      _subtract_ptr.asFunction<_dart_subtract>();
+  late final _subtract_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Int32>, ffi.Int32)>>('subtract');
+  late final _subtract =
+      _subtract_ptr.asFunction<int Function(ffi.Pointer<ffi.Int32>, int)>();
 
   /// Multiplies 2 integers, returns pointer to an integer,.
   ffi.Pointer<ffi.Int32> multiply(
@@ -60,10 +63,11 @@
     );
   }
 
-  late final _multiply_ptr =
-      _lookup<ffi.NativeFunction<_c_multiply>>('multiply');
-  late final _dart_multiply _multiply =
-      _multiply_ptr.asFunction<_dart_multiply>();
+  late final _multiply_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int32> Function(ffi.Int32, ffi.Int32)>>('multiply');
+  late final _multiply =
+      _multiply_ptr.asFunction<ffi.Pointer<ffi.Int32> Function(int, int)>();
 
   /// Divides 2 integers, returns pointer to a float.
   ffi.Pointer<ffi.Float> divide(
@@ -76,8 +80,11 @@
     );
   }
 
-  late final _divide_ptr = _lookup<ffi.NativeFunction<_c_divide>>('divide');
-  late final _dart_divide _divide = _divide_ptr.asFunction<_dart_divide>();
+  late final _divide_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Float> Function(ffi.Int32, ffi.Int32)>>('divide');
+  late final _divide =
+      _divide_ptr.asFunction<ffi.Pointer<ffi.Float> Function(int, int)>();
 
   /// Divides 2 floats, returns a pointer to double.
   ffi.Pointer<ffi.Double> dividePercision(
@@ -90,58 +97,11 @@
     );
   }
 
-  late final _dividePercision_ptr =
-      _lookup<ffi.NativeFunction<_c_dividePercision>>('dividePercision');
-  late final _dart_dividePercision _dividePercision =
-      _dividePercision_ptr.asFunction<_dart_dividePercision>();
+  late final _dividePercision_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Double> Function(ffi.Pointer<ffi.Float>,
+              ffi.Pointer<ffi.Float>)>>('dividePercision');
+  late final _dividePercision = _dividePercision_ptr.asFunction<
+      ffi.Pointer<ffi.Double> Function(
+          ffi.Pointer<ffi.Float>, ffi.Pointer<ffi.Float>)>();
 }
-
-typedef _c_sum = ffi.Int32 Function(
-  ffi.Int32 a,
-  ffi.Int32 b,
-);
-
-typedef _dart_sum = int Function(
-  int a,
-  int b,
-);
-
-typedef _c_subtract = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int32> a,
-  ffi.Int32 b,
-);
-
-typedef _dart_subtract = int Function(
-  ffi.Pointer<ffi.Int32> a,
-  int b,
-);
-
-typedef _c_multiply = ffi.Pointer<ffi.Int32> Function(
-  ffi.Int32 a,
-  ffi.Int32 b,
-);
-
-typedef _dart_multiply = ffi.Pointer<ffi.Int32> Function(
-  int a,
-  int b,
-);
-
-typedef _c_divide = ffi.Pointer<ffi.Float> Function(
-  ffi.Int32 a,
-  ffi.Int32 b,
-);
-
-typedef _dart_divide = ffi.Pointer<ffi.Float> Function(
-  int a,
-  int b,
-);
-
-typedef _c_dividePercision = ffi.Pointer<ffi.Double> Function(
-  ffi.Pointer<ffi.Float> a,
-  ffi.Pointer<ffi.Float> b,
-);
-
-typedef _dart_dividePercision = ffi.Pointer<ffi.Double> Function(
-  ffi.Pointer<ffi.Float> a,
-  ffi.Pointer<ffi.Float> b,
-);
diff --git a/lib/src/code_generator.dart b/lib/src/code_generator.dart
index 0b23674..710b32f 100644
--- a/lib/src/code_generator.dart
+++ b/lib/src/code_generator.dart
@@ -14,5 +14,5 @@
 export 'code_generator/library.dart';
 export 'code_generator/struc.dart';
 export 'code_generator/type.dart';
-export 'code_generator/typedef.dart';
+export 'code_generator/typealias.dart';
 export 'code_generator/union.dart';
diff --git a/lib/src/code_generator/binding.dart b/lib/src/code_generator/binding.dart
index 877f243..105d6f0 100644
--- a/lib/src/code_generator/binding.dart
+++ b/lib/src/code_generator/binding.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'binding_string.dart';
-import 'typedef.dart';
 import 'writer.dart';
 
 /// Base class for all Bindings.
@@ -28,8 +27,8 @@
     this.dartDoc,
   });
 
-  /// Return typedef dependencies.
-  List<Typedef> getTypedefDependencies(Writer w) => const [];
+  /// Get all dependencies, including itself and save them in [dependencies].
+  void addDependencies(Set<Binding> dependencies);
 
   /// Converts a Binding to its actual string representation.
   ///
diff --git a/lib/src/code_generator/compound.dart b/lib/src/code_generator/compound.dart
index 77868eb..b6b97a3 100644
--- a/lib/src/code_generator/compound.dart
+++ b/lib/src/code_generator/compound.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:ffigen/src/code_generator.dart';
-import 'package:ffigen/src/code_generator/typedef.dart';
 
 import 'binding.dart';
 import 'binding_string.dart';
@@ -104,23 +103,6 @@
     return type.getCType(w);
   }
 
-  List<Typedef>? _typedefDependencies;
-  @override
-  List<Typedef> getTypedefDependencies(Writer w) {
-    if (_typedefDependencies == null) {
-      _typedefDependencies = <Typedef>[];
-
-      // Write typedef's required by members and resolve name conflicts.
-      for (final m in members) {
-        final base = m.type.getBaseType();
-        if (base.broadType == BroadType.NativeFunction) {
-          _typedefDependencies!.addAll(base.nativeFunc!.getDependencies());
-        }
-      }
-    }
-    return _typedefDependencies ?? [];
-  }
-
   @override
   BindingString toBindingString(Writer w) {
     final s = StringBuffer();
@@ -155,7 +137,7 @@
           s.writeAll(m.dartDoc!.split('\n'), '\n' + depth + '/// ');
           s.write('\n');
         }
-        if (m.type.isPrimitive) {
+        if (!m.type.sameDartAndCType(w)) {
           s.write('$depth@${m.type.getCType(w)}()\n');
         }
         s.write('${depth}external ${m.type.getDartType(w)} $memberName;\n\n');
@@ -167,6 +149,14 @@
         type: isStruct ? BindingStringType.struc : BindingStringType.union,
         string: s.toString());
   }
+
+  @override
+  void addDependencies(Set<Binding> dependencies) {
+    if (dependencies.contains(this)) return;
+
+    dependencies.add(this);
+    members.forEach((m) => m.type.addDependencies(dependencies));
+  }
 }
 
 class Member {
diff --git a/lib/src/code_generator/constant.dart b/lib/src/code_generator/constant.dart
index cf6d8e8..8fd7191 100644
--- a/lib/src/code_generator/constant.dart
+++ b/lib/src/code_generator/constant.dart
@@ -50,9 +50,16 @@
       s.write(makeDartDoc(dartDoc!));
     }
 
-    s.write('const $rawType $constantName = $rawValue;\n\n');
+    s.write('\nconst $rawType $constantName = $rawValue;\n\n');
 
     return BindingString(
         type: BindingStringType.constant, string: s.toString());
   }
+
+  @override
+  void addDependencies(Set<Binding> dependencies) {
+    if (dependencies.contains(this)) return;
+
+    dependencies.add(this);
+  }
 }
diff --git a/lib/src/code_generator/enum_class.dart b/lib/src/code_generator/enum_class.dart
index ec9d5e1..e1ed5c4 100644
--- a/lib/src/code_generator/enum_class.dart
+++ b/lib/src/code_generator/enum_class.dart
@@ -68,6 +68,13 @@
     return BindingString(
         type: BindingStringType.enumClass, string: s.toString());
   }
+
+  @override
+  void addDependencies(Set<Binding> dependencies) {
+    if (dependencies.contains(this)) return;
+
+    dependencies.add(this);
+  }
 }
 
 /// Represents a single value in an enum.
diff --git a/lib/src/code_generator/func.dart b/lib/src/code_generator/func.dart
index 5236c50..21aad75 100644
--- a/lib/src/code_generator/func.dart
+++ b/lib/src/code_generator/func.dart
@@ -29,10 +29,12 @@
 /// typedef _dart_sum = int Function(int a, int b);
 /// ```
 class Func extends LookUpBinding {
-  final Type returnType;
-  final List<Parameter> parameters;
+  final FunctionType functionType;
   final bool exposeSymbolAddress;
 
+  /// Contains typealias for function type if [exposeSymbolAddress] is true.
+  Type? _exposedFunctionType;
+
   /// [originalName] is looked up in dynamic library, if not
   /// provided, takes the value of [name].
   Func({
@@ -40,65 +42,29 @@
     required String name,
     String? originalName,
     String? dartDoc,
-    required this.returnType,
+    required Type returnType,
     List<Parameter>? parameters,
     this.exposeSymbolAddress = false,
-  })  : parameters = parameters ?? [],
+  })  : functionType = FunctionType(
+          returnType: returnType,
+          parameters: parameters ?? const [],
+        ),
         super(
           usr: usr,
           originalName: originalName,
           name: name,
           dartDoc: dartDoc,
         ) {
-    for (var i = 0; i < this.parameters.length; i++) {
-      if (this.parameters[i].name.trim() == '') {
-        this.parameters[i].name = 'arg$i';
+    for (var i = 0; i < functionType.parameters.length; i++) {
+      if (functionType.parameters[i].name.trim() == '') {
+        functionType.parameters[i].name = 'arg$i';
       }
     }
+
+    _exposedFunctionType = Type.typealias(
+        Typealias(name: 'Native_$name', type: Type.functionType(functionType)));
   }
 
-  List<Typedef>? _typedefDependencies;
-  @override
-  List<Typedef> getTypedefDependencies(Writer w) {
-    if (_typedefDependencies == null) {
-      _typedefDependencies = <Typedef>[];
-
-      // Add typedef's required by return type.
-      final returnTypeBase = returnType.getBaseType();
-      if (returnTypeBase.broadType == BroadType.NativeFunction) {
-        _typedefDependencies!
-            .addAll(returnTypeBase.nativeFunc!.getDependencies());
-      }
-
-      // Add typedef's required by parameters.
-      for (final p in parameters) {
-        final base = p.type.getBaseType();
-        if (base.broadType == BroadType.NativeFunction) {
-          _typedefDependencies!.addAll(base.nativeFunc!.getDependencies());
-        }
-      }
-      // Add C function typedef.
-      _typedefDependencies!.add(cType);
-      // Add Dart function typedef.
-      _typedefDependencies!.add(dartType);
-    }
-    return _typedefDependencies!;
-  }
-
-  Typedef? _cType, _dartType;
-  Typedef get cType => _cType ??= Typedef(
-        name: exposeSymbolAddress ? 'Native_$name' : '_c_$name',
-        returnType: returnType,
-        parameters: parameters,
-        typedefType: TypedefType.C,
-      );
-  Typedef get dartType => _dartType ??= Typedef(
-        name: '_dart_$name',
-        returnType: returnType,
-        parameters: parameters,
-        typedefType: TypedefType.Dart,
-      );
-
   @override
   BindingString toBindingString(Writer w) {
     final s = StringBuffer();
@@ -112,18 +78,22 @@
     }
     // Resolve name conflicts in function parameter names.
     final paramNamer = UniqueNamer({});
-    for (final p in parameters) {
+    for (final p in functionType.parameters) {
       p.name = paramNamer.makeUnique(p.name);
     }
     // Write enclosing function.
-    if (w.dartBool && returnType.broadType == BroadType.Boolean) {
+    if (w.dartBool &&
+        functionType.returnType.getBaseTypealiasType().broadType ==
+            BroadType.Boolean) {
       // Use bool return type in enclosing function.
       s.write('bool $enclosingFuncName(\n');
     } else {
-      s.write('${returnType.getDartType(w)} $enclosingFuncName(\n');
+      s.write(
+          '${functionType.returnType.getDartType(w)} $enclosingFuncName(\n');
     }
-    for (final p in parameters) {
-      if (w.dartBool && p.type.broadType == BroadType.Boolean) {
+    for (final p in functionType.parameters) {
+      if (w.dartBool &&
+          p.type.getBaseTypealiasType().broadType == BroadType.Boolean) {
         // Use bool parameter type in enclosing function.
         s.write('  bool ${p.name},\n');
       } else {
@@ -134,15 +104,16 @@
     s.write('return $funcVarName');
 
     s.write('(\n');
-    for (final p in parameters) {
-      if (w.dartBool && p.type.broadType == BroadType.Boolean) {
+    for (final p in functionType.parameters) {
+      if (w.dartBool &&
+          p.type.getBaseTypealiasType().broadType == BroadType.Boolean) {
         // Convert bool parameter to int before calling.
         s.write('    ${p.name}?1:0,\n');
       } else {
         s.write('    ${p.name},\n');
       }
     }
-    if (w.dartBool && returnType.broadType == BroadType.Boolean) {
+    if (w.dartBool && functionType.returnType.broadType == BroadType.Boolean) {
       // Convert int return type to bool.
       s.write('  )!=0;\n');
     } else {
@@ -150,27 +121,42 @@
     }
     s.write('}\n');
 
-    // Write function pointer.
-    s.write(
-        "late final $funcPointerName = ${w.lookupFuncIdentifier}<${w.ffiLibraryPrefix}.NativeFunction<${cType.name}>>('$originalName');\n");
-    // Write function variable.
-    s.write(
-        'late final ${dartType.name} $funcVarName = $funcPointerName.asFunction<${dartType.name}>();\n\n');
+    final cType = exposeSymbolAddress
+        ? _exposedFunctionType!.getCType(w)
+        : functionType.getCType(w, writeArgumentNames: false);
+    final dartType = functionType.getDartType(w, writeArgumentNames: false);
 
     if (exposeSymbolAddress) {
       // Add to SymbolAddress in writer.
       w.symbolAddressWriter.addSymbol(
         type:
-            '${w.ffiLibraryPrefix}.Pointer<${w.ffiLibraryPrefix}.NativeFunction<${cType.name}>>',
+            '${w.ffiLibraryPrefix}.Pointer<${w.ffiLibraryPrefix}.NativeFunction<$cType>>',
         name: name,
         ptrName: funcPointerName,
       );
     }
+    // Write function pointer.
+    s.write(
+        "late final $funcPointerName = ${w.lookupFuncIdentifier}<${w.ffiLibraryPrefix}.NativeFunction<$cType>>('$originalName');\n");
+    s.write(
+        'late final $funcVarName = $funcPointerName.asFunction<$dartType>();\n\n');
+
     return BindingString(type: BindingStringType.func, string: s.toString());
   }
+
+  @override
+  void addDependencies(Set<Binding> dependencies) {
+    if (dependencies.contains(this)) return;
+
+    dependencies.add(this);
+    if (exposeSymbolAddress) {
+      _exposedFunctionType!.addDependencies(dependencies);
+    }
+    functionType.addDependencies(dependencies);
+  }
 }
 
-/// Represents a Parameter, used in [Func] and [Typedef].
+/// Represents a Parameter, used in [Func] and [Typealias].
 class Parameter {
   final String? originalName;
   String name;
@@ -180,7 +166,7 @@
       : originalName = originalName ?? name,
         // A type with broadtype [BroadType.NativeFunction] is wrapped with a
         // pointer because this is a shorthand used in C for Pointer to function.
-        type = type.broadType == BroadType.NativeFunction
+        type = type.getBaseTypealiasType().broadType == BroadType.NativeFunction
             ? Type.pointer(type)
             : type;
 }
diff --git a/lib/src/code_generator/global.dart b/lib/src/code_generator/global.dart
index cf864cd..df4c7f0 100644
--- a/lib/src/code_generator/global.dart
+++ b/lib/src/code_generator/global.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:ffigen/src/code_generator/typedef.dart';
-
 import 'binding.dart';
 import 'binding_string.dart';
 import 'type.dart';
@@ -38,21 +36,6 @@
           dartDoc: dartDoc,
         );
 
-  List<Typedef>? _typedefDependencies;
-  @override
-  List<Typedef> getTypedefDependencies(Writer w) {
-    if (_typedefDependencies == null) {
-      _typedefDependencies = <Typedef>[];
-
-      // Add typedef's required by the variable's type.
-      final valueType = type.getBaseType();
-      if (valueType.broadType == BroadType.NativeFunction) {
-        _typedefDependencies!.addAll(valueType.nativeFunc!.getDependencies());
-      }
-    }
-    return _typedefDependencies!;
-  }
-
   @override
   BindingString toBindingString(Writer w) {
     final s = StringBuffer();
@@ -66,8 +49,9 @@
 
     s.write(
         "late final ${w.ffiLibraryPrefix}.Pointer<$cType> $pointerName = ${w.lookupFuncIdentifier}<$cType>('$originalName');\n\n");
-    if (type.broadType == BroadType.Compound) {
-      if (type.compound!.isOpaque) {
+    final baseTypealiasType = type.getBaseTypealiasType();
+    if (baseTypealiasType.broadType == BroadType.Compound) {
+      if (baseTypealiasType.compound!.isOpaque) {
         s.write(
             '${w.ffiLibraryPrefix}.Pointer<$cType> get $globalVarName => $pointerName;\n\n');
       } else {
@@ -90,4 +74,12 @@
 
     return BindingString(type: BindingStringType.global, string: s.toString());
   }
+
+  @override
+  void addDependencies(Set<Binding> dependencies) {
+    if (dependencies.contains(this)) return;
+
+    dependencies.add(this);
+    type.addDependencies(dependencies);
+  }
 }
diff --git a/lib/src/code_generator/library.dart b/lib/src/code_generator/library.dart
index c29313f..57776bb 100644
--- a/lib/src/code_generator/library.dart
+++ b/lib/src/code_generator/library.dart
@@ -18,7 +18,7 @@
 /// Container for all Bindings.
 class Library {
   /// List of bindings in this library.
-  final List<Binding> bindings;
+  late List<Binding> bindings;
 
   late Writer _writer;
   Writer get writer => _writer;
@@ -26,17 +26,26 @@
   Library({
     required String name,
     String? description,
-    required this.bindings,
+    required List<Binding> bindings,
     String? header,
     bool dartBool = true,
     bool sort = false,
     StructPackingOverride? packingOverride,
   }) {
-    if (sort) _sort();
+    /// Get all dependencies (includes itself).
+    final dependencies = <Binding>{};
+    bindings.forEach((b) => b.addDependencies(dependencies));
+
+    /// Save bindings.
+    this.bindings = dependencies.toList();
+
+    if (sort) {
+      _sort();
+    }
 
     /// Handle any declaration-declaration name conflicts.
     final declConflictHandler = UniqueNamer({});
-    for (final b in bindings) {
+    for (final b in this.bindings) {
       _warnIfPrivateDeclaration(b);
       _resolveIfNameConflicts(declConflictHandler, b);
     }
@@ -44,7 +53,7 @@
     // Override pack values according to config. We do this after declaration
     // conflicts have been handled so that users can target the generated names.
     if (packingOverride != null) {
-      for (final b in bindings) {
+      for (final b in this.bindings) {
         if (b is Struc && packingOverride.isOverriden(b.name)) {
           b.pack = packingOverride.getOverridenPackValue(b.name);
         }
@@ -52,8 +61,9 @@
     }
 
     // Seperate bindings which require lookup.
-    final lookUpBindings = bindings.whereType<LookUpBinding>().toList();
-    final noLookUpBindings = bindings.whereType<NoLookUpBinding>().toList();
+    final lookUpBindings = this.bindings.whereType<LookUpBinding>().toList();
+    final noLookUpBindings =
+        this.bindings.whereType<NoLookUpBinding>().toList();
 
     _writer = Writer(
       lookUpBindings: lookUpBindings,
diff --git a/lib/src/code_generator/type.dart b/lib/src/code_generator/type.dart
index c306395..0a7e941 100644
--- a/lib/src/code_generator/type.dart
+++ b/lib/src/code_generator/type.dart
@@ -5,7 +5,7 @@
 import 'package:ffigen/src/code_generator.dart';
 
 import 'compound.dart';
-import 'typedef.dart';
+import 'typealias.dart';
 import 'writer.dart';
 
 class _SubType {
@@ -39,10 +39,18 @@
   Compound,
   NativeFunction,
 
+  /// Represents a function type.
+  FunctionType,
+
+  /// Represents a typealias.
+  Typealias,
+
   /// Represents a Dart_Handle.
   Handle,
 
-  /// Stores its element type in NativeType as only those are supported.
+  Enum,
+
+  /// Represents an Array type.
   ConstantArray,
   IncompleteArray,
 
@@ -68,11 +76,23 @@
     SupportedNativeType.IntPtr: _SubType(c: 'IntPtr', dart: 'int'),
   };
 
+  /// Enum type is mapped to [SupportedNativeType.Int32].
+  static const enumNativeType = SupportedNativeType.Int32;
+
   /// Reference to the [Compound] binding this type refers to.
   Compound? compound;
 
-  /// Reference to the [Typedef] this type refers to.
-  Typedef? nativeFunc;
+  /// Reference to the [NativeFunc] this type refers to.
+  NativeFunc? nativeFunc;
+
+  /// Reference to the [Typealias] this type refers to.
+  Typealias? typealias;
+
+  /// Reference to the [FunctionType] this type refers to.
+  FunctionType? functionType;
+
+  /// Reference to the [EnumClass] this type refers to.
+  EnumClass? enumClass;
 
   /// For providing [SupportedNativeType] only.
   final SupportedNativeType? nativeType;
@@ -93,8 +113,11 @@
     required this.broadType,
     this.child,
     this.compound,
+    this.enumClass,
     this.nativeType,
     this.nativeFunc,
+    this.typealias,
+    this.functionType,
     this.length,
     this.unimplementedReason,
   });
@@ -111,9 +134,19 @@
   factory Type.union(Union union) {
     return Type._(broadType: BroadType.Compound, compound: union);
   }
-  factory Type.nativeFunc(Typedef nativeFunc) {
+  factory Type.enumClass(EnumClass enumClass) {
+    return Type._(broadType: BroadType.Enum, enumClass: enumClass);
+  }
+  factory Type.functionType(FunctionType functionType) {
+    return Type._(
+        broadType: BroadType.FunctionType, functionType: functionType);
+  }
+  factory Type.nativeFunc(NativeFunc nativeFunc) {
     return Type._(broadType: BroadType.NativeFunction, nativeFunc: nativeFunc);
   }
+  factory Type.typealias(Typealias typealias) {
+    return Type._(broadType: BroadType.Typealias, typealias: typealias);
+  }
   factory Type.nativeType(SupportedNativeType nativeType) {
     return Type._(broadType: BroadType.NativeType, nativeType: nativeType);
   }
@@ -143,6 +176,26 @@
     return Type._(broadType: BroadType.Handle);
   }
 
+  /// Get all dependencies of this type and save them in [dependencies].
+  void addDependencies(Set<Binding> dependencies) {
+    switch (broadType) {
+      case BroadType.Compound:
+        return compound!.addDependencies(dependencies);
+      case BroadType.NativeFunction:
+        return nativeFunc!.addDependencies(dependencies);
+      case BroadType.FunctionType:
+        return functionType!.addDependencies(dependencies);
+      case BroadType.Typealias:
+        return typealias!.addDependencies(dependencies);
+      case BroadType.Enum:
+        return enumClass!.addDependencies(dependencies);
+      default:
+        if (child != null) {
+          return child!.addDependencies(dependencies);
+        }
+    }
+  }
+
   /// Get base type for any type.
   ///
   /// E.g int** has base [Type] of int.
@@ -167,16 +220,33 @@
     }
   }
 
-  bool get isPrimitive =>
-      (broadType == BroadType.NativeType || broadType == BroadType.Boolean);
+  /// Get base typealias type.
+  ///
+  /// Returns itself if it's not a Typealias.
+  Type getBaseTypealiasType() {
+    if (broadType == BroadType.Typealias) {
+      return typealias!.type.getBaseTypealiasType();
+    } else {
+      return this;
+    }
+  }
+
+  /// Function to check if the dart and C type string are same.
+  bool sameDartAndCType(Writer w) => getCType(w) == getDartType(w);
 
   /// Returns true if the type is a [Compound] and is incomplete.
-  bool get isIncompleteCompound =>
-      (broadType == BroadType.Compound &&
-          compound != null &&
-          compound!.isInComplete) ||
-      (broadType == BroadType.ConstantArray &&
-          getBaseArrayType().isIncompleteCompound);
+  bool get isIncompleteCompound {
+    final baseTypealiasType = getBaseTypealiasType();
+    if (baseTypealiasType == this) {
+      return (broadType == BroadType.Compound &&
+              compound != null &&
+              compound!.isInComplete) ||
+          (broadType == BroadType.ConstantArray &&
+              getBaseArrayType().isIncompleteCompound);
+    } else {
+      return baseTypealiasType.isIncompleteCompound;
+    }
+  }
 
   String getCType(Writer w) {
     switch (broadType) {
@@ -186,8 +256,10 @@
         return '${w.ffiLibraryPrefix}.Pointer<${child!.getCType(w)}>';
       case BroadType.Compound:
         return '${compound!.name}';
+      case BroadType.Enum:
+        return '${w.ffiLibraryPrefix}.${_primitives[enumNativeType]!.c}';
       case BroadType.NativeFunction:
-        return '${w.ffiLibraryPrefix}.NativeFunction<${nativeFunc!.name}>';
+        return '${w.ffiLibraryPrefix}.NativeFunction<${nativeFunc!.type.getCType(w)}>';
       case BroadType
           .IncompleteArray: // Array parameters are treated as Pointers in C.
         return '${w.ffiLibraryPrefix}.Pointer<${child!.getCType(w)}>';
@@ -198,8 +270,12 @@
         return '${w.ffiLibraryPrefix}.${_primitives[SupportedNativeType.Uint8]!.c}';
       case BroadType.Handle:
         return '${w.ffiLibraryPrefix}.Handle';
-      default:
-        throw Exception('cType unknown');
+      case BroadType.FunctionType:
+        return functionType!.getCType(w);
+      case BroadType.Typealias:
+        return typealias!.name;
+      case BroadType.Unimplemented:
+        throw UnimplementedError('C type unknown for ${broadType.toString()}');
     }
   }
 
@@ -211,8 +287,10 @@
         return '${w.ffiLibraryPrefix}.Pointer<${child!.getCType(w)}>';
       case BroadType.Compound:
         return '${compound!.name}';
+      case BroadType.Enum:
+        return _primitives[enumNativeType]!.dart;
       case BroadType.NativeFunction:
-        return '${w.ffiLibraryPrefix}.NativeFunction<${nativeFunc!.name}>';
+        return '${w.ffiLibraryPrefix}.NativeFunction<${nativeFunc!.type.getDartType(w)}>';
       case BroadType
           .IncompleteArray: // Array parameters are treated as Pointers in C.
         return '${w.ffiLibraryPrefix}.Pointer<${child!.getCType(w)}>';
@@ -223,8 +301,19 @@
         return _primitives[SupportedNativeType.Uint8]!.dart;
       case BroadType.Handle:
         return 'Object';
-      default:
-        throw Exception('dart type unknown for ${broadType.toString()}');
+      case BroadType.FunctionType:
+        return functionType!.getDartType(w);
+      case BroadType.Typealias:
+        // Typealias cannot be used by name in Dart types unless both the C and
+        // Dart type of the underlying types are same.
+        if (typealias!.type.sameDartAndCType(w)) {
+          return typealias!.name;
+        } else {
+          return typealias!.type.getDartType(w);
+        }
+      case BroadType.Unimplemented:
+        throw UnimplementedError(
+            'dart type unknown for ${broadType.toString()}');
     }
   }
 
@@ -233,3 +322,66 @@
     return 'Type: $broadType';
   }
 }
+
+/// Represents a function type.
+class FunctionType {
+  final Type returnType;
+  final List<Parameter> parameters;
+
+  FunctionType({
+    required this.returnType,
+    required this.parameters,
+  });
+
+  String getCType(Writer w, {bool writeArgumentNames = true}) {
+    final sb = StringBuffer();
+
+    // Write return Type.
+    sb.write(returnType.getCType(w));
+
+    // Write Function.
+    sb.write(' Function(');
+    sb.write(parameters.map<String>((p) {
+      return '${p.type.getCType(w)} ${writeArgumentNames ? p.name : ""}';
+    }).join(', '));
+    sb.write(')');
+
+    return sb.toString();
+  }
+
+  String getDartType(Writer w, {bool writeArgumentNames = true}) {
+    final sb = StringBuffer();
+
+    // Write return Type.
+    sb.write(returnType.getDartType(w));
+
+    // Write Function.
+    sb.write(' Function(');
+    sb.write(parameters.map<String>((p) {
+      return '${p.type.getDartType(w)} ${writeArgumentNames ? p.name : ""}';
+    }).join(', '));
+    sb.write(')');
+
+    return sb.toString();
+  }
+
+  void addDependencies(Set<Binding> dependencies) {
+    returnType.addDependencies(dependencies);
+    parameters.forEach((p) => p.type.addDependencies(dependencies));
+  }
+}
+
+/// Represents a NativeFunction<Function>.
+class NativeFunc {
+  final Type type;
+
+  NativeFunc.fromFunctionType(FunctionType functionType)
+      : type = Type.functionType(functionType);
+
+  NativeFunc.fromFunctionTypealias(Typealias typealias)
+      : type = Type.typealias(typealias);
+
+  void addDependencies(Set<Binding> dependencies) {
+    type.addDependencies(dependencies);
+  }
+}
diff --git a/lib/src/code_generator/typealias.dart b/lib/src/code_generator/typealias.dart
new file mode 100644
index 0000000..ada848e
--- /dev/null
+++ b/lib/src/code_generator/typealias.dart
@@ -0,0 +1,52 @@
+// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:ffigen/src/code_generator.dart';
+
+import 'binding_string.dart';
+import 'type.dart';
+import 'utils.dart';
+import 'writer.dart';
+
+/// A simple Typealias, Expands to -
+///
+/// ```dart
+/// typedef $name = $type;
+/// );
+/// ```
+class Typealias extends NoLookUpBinding {
+  final Type type;
+
+  Typealias({
+    String? usr,
+    String? originalName,
+    String? dartDoc,
+    required String name,
+    required this.type,
+  }) : super(
+          usr: usr,
+          name: name,
+          dartDoc: dartDoc,
+          originalName: originalName,
+        );
+
+  @override
+  void addDependencies(Set<Binding> dependencies) {
+    if (dependencies.contains(this)) return;
+
+    dependencies.add(this);
+    type.addDependencies(dependencies);
+  }
+
+  @override
+  BindingString toBindingString(Writer w) {
+    final sb = StringBuffer();
+    if (dartDoc != null) {
+      sb.write(makeDartDoc(dartDoc!));
+    }
+    sb.write('typedef $name = ${type.getCType(w)};\n');
+    return BindingString(
+        type: BindingStringType.typeDef, string: sb.toString());
+  }
+}
diff --git a/lib/src/code_generator/typedef.dart b/lib/src/code_generator/typedef.dart
deleted file mode 100644
index 53bc46e..0000000
--- a/lib/src/code_generator/typedef.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:ffigen/src/code_generator.dart';
-
-import 'func.dart' show Parameter;
-import 'type.dart';
-import 'utils.dart';
-import 'writer.dart';
-
-/// A simple typedef, Expands to -
-///
-/// ```dart
-/// typedef $name = $returnType Function(
-///   $parameter1...,
-///   $parameter2...,
-///   .
-///   .
-/// );
-/// ```
-/// Return/Parameter types can be of for C/Dart signarture depending on [typedefType].
-///
-/// Note: re-set [name] after resolving name conflicts.
-class Typedef {
-  String name;
-  String? dartDoc;
-  final Type returnType;
-  final TypedefType typedefType;
-  final List<Parameter> parameters;
-
-  Typedef({
-    required this.name,
-    this.dartDoc,
-    required this.returnType,
-    required this.typedefType,
-    List<Parameter>? parameters,
-  }) : parameters = parameters ?? [];
-
-  /// Returns the [Typedef] dependencies required by this typedef including itself.
-  List<Typedef> getDependencies() {
-    final dep = <Typedef>[];
-    for (final p in parameters) {
-      final base = p.type.getBaseType();
-      if (base.broadType == BroadType.NativeFunction) {
-        dep.addAll(base.nativeFunc!.getDependencies());
-      }
-    }
-    final returnTypeBase = returnType.getBaseType();
-    if (returnTypeBase.broadType == BroadType.NativeFunction) {
-      dep.addAll(returnTypeBase.nativeFunc!.getDependencies());
-    }
-    dep.add(this);
-    return dep;
-  }
-
-  String toTypedefString(Writer w) {
-    final s = StringBuffer();
-    if (dartDoc != null) {
-      s.write(makeDartDoc(dartDoc!));
-    }
-    final typedefName = name;
-    final paramNamer = UniqueNamer({});
-    if (typedefType == TypedefType.C) {
-      s.write('typedef $typedefName = ${returnType.getCType(w)} Function(\n');
-      for (final p in parameters) {
-        final name = p.name.isNotEmpty ? paramNamer.makeUnique(p.name) : p.name;
-        s.write('  ${p.type.getCType(w)} $name,\n');
-      }
-      s.write(');\n\n');
-    } else {
-      s.write(
-          'typedef $typedefName = ${returnType.getDartType(w)} Function(\n');
-      for (final p in parameters) {
-        final name = p.name.isNotEmpty ? paramNamer.makeUnique(p.name) : p.name;
-
-        s.write('  ${p.type.getDartType(w)} $name,\n');
-      }
-      s.write(');\n\n');
-    }
-
-    return s.toString();
-  }
-}
-
-enum TypedefType { C, Dart }
diff --git a/lib/src/code_generator/writer.dart b/lib/src/code_generator/writer.dart
index 10d1d57..2b9a0c9 100644
--- a/lib/src/code_generator/writer.dart
+++ b/lib/src/code_generator/writer.dart
@@ -5,7 +5,6 @@
 import 'package:ffigen/src/code_generator/utils.dart';
 
 import 'binding.dart';
-import 'typedef.dart';
 
 /// To store generated String bindings.
 class Writer {
@@ -165,20 +164,6 @@
     s.write("import 'dart:ffi' as $ffiLibraryPrefix;\n");
     s.write('\n');
 
-    // Will contain duplicates, must be processed.
-    final rawDependencies = <Typedef>[];
-
-    /// Get typedef dependencies, these will be written at the end.
-    for (final b in lookUpBindings) {
-      rawDependencies.addAll(b.getTypedefDependencies(this));
-    }
-    for (final b in noLookUpBindings) {
-      rawDependencies.addAll(b.getTypedefDependencies(this));
-    }
-
-    // Dependencies, processed to remove duplicates and resolve name conflicts.
-    final dependencies = processDependencies(rawDependencies);
-
     /// Write [lookUpBindings].
     if (lookUpBindings.isNotEmpty) {
       // Write doc comment for wrapper class.
@@ -221,38 +206,8 @@
       s.write(b.toBindingString(this).string);
     }
 
-    // Write typedef dependencies.
-    for (final d in dependencies) {
-      s.write(d.toTypedefString(this));
-    }
-
     return s.toString();
   }
-
-  /// Removes duplicates and resolves all name conflicts.
-  Set<Typedef> processDependencies(List<Typedef> dependencies) {
-    final processedDependencies = dependencies.toSet();
-
-    for (final d in processedDependencies) {
-      d.name = _makeUniqueTypedefName(d.name);
-    }
-    return processedDependencies;
-  }
-
-  /// Returns a typedef name that is unique in both top level and wrapper level,
-  /// ans only marks it as used at top-level.
-  String _makeUniqueTypedefName(String name) {
-    final base = name;
-    var uniqueName = name;
-    var suffix = 0;
-    while (topLevelUniqueNamer.isUsed(uniqueName) ||
-        wrapperLevelUniqueNamer.isUsed(uniqueName)) {
-      suffix++;
-      uniqueName = base + suffix.toString();
-    }
-    topLevelUniqueNamer.markUsed(uniqueName);
-    return uniqueName;
-  }
 }
 
 /// Manages the generated `_SymbolAddress` class.
diff --git a/lib/src/config_provider/config.dart b/lib/src/config_provider/config.dart
index 92194dc..57c0019 100644
--- a/lib/src/config_provider/config.dart
+++ b/lib/src/config_provider/config.dart
@@ -63,6 +63,10 @@
   Declaration get macroDecl => _macroDecl;
   late Declaration _macroDecl;
 
+  /// Declaration config for Typedefs.
+  Declaration get typedefs => _typedefs;
+  late Declaration _typedefs;
+
   /// If generated bindings should be sorted alphabetically.
   bool get sort => _sort;
   late bool _sort;
@@ -286,6 +290,15 @@
           _macroDecl = result as Declaration;
         },
       ),
+      [strings.typedefs]: Specification<Declaration>(
+        requirement: Requirement.no,
+        validator: declarationConfigValidator,
+        extractor: declarationConfigExtractor,
+        defaultValue: () => Declaration(),
+        extractedResult: (dynamic result) {
+          _typedefs = result as Declaration;
+        },
+      ),
       [strings.sizemap]: Specification<Map<int, SupportedNativeType>>(
         validator: sizemapValidator,
         extractor: sizemapExtractor,
diff --git a/lib/src/header_parser/clang_bindings/clang_bindings.dart b/lib/src/header_parser/clang_bindings/clang_bindings.dart
index 0525565..6f02100 100644
--- a/lib/src/header_parser/clang_bindings/clang_bindings.dart
+++ b/lib/src/header_parser/clang_bindings/clang_bindings.dart
@@ -33,9 +33,10 @@
   }
 
   late final _clang_getCString_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCString>>('clang_getCString');
-  late final _dart_clang_getCString _clang_getCString =
-      _clang_getCString_ptr.asFunction<_dart_clang_getCString>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(CXString)>>(
+          'clang_getCString');
+  late final _clang_getCString = _clang_getCString_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(CXString)>();
 
   /// Free the given string.
   void clang_disposeString(
@@ -47,10 +48,10 @@
   }
 
   late final _clang_disposeString_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeString>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXString)>>(
           'clang_disposeString');
-  late final _dart_clang_disposeString _clang_disposeString =
-      _clang_disposeString_ptr.asFunction<_dart_clang_disposeString>();
+  late final _clang_disposeString =
+      _clang_disposeString_ptr.asFunction<void Function(CXString)>();
 
   /// Provides a shared context for creating translation units.
   ///
@@ -90,7 +91,7 @@
   /// This process of creating the 'pch', loading it separately, and using it (via
   /// -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
   /// (which gives the indexer the same performance benefit as the compiler).
-  ffi.Pointer<ffi.Void> clang_createIndex(
+  CXIndex clang_createIndex(
     int excludeDeclarationsFromPCH,
     int displayDiagnostics,
   ) {
@@ -101,16 +102,17 @@
   }
 
   late final _clang_createIndex_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_createIndex>>('clang_createIndex');
-  late final _dart_clang_createIndex _clang_createIndex =
-      _clang_createIndex_ptr.asFunction<_dart_clang_createIndex>();
+      _lookup<ffi.NativeFunction<CXIndex Function(ffi.Int32, ffi.Int32)>>(
+          'clang_createIndex');
+  late final _clang_createIndex =
+      _clang_createIndex_ptr.asFunction<CXIndex Function(int, int)>();
 
   /// Destroy the given index.
   ///
   /// The index must not be destroyed until all of the translation units created
   /// within that index have been destroyed.
   void clang_disposeIndex(
-    ffi.Pointer<ffi.Void> index,
+    CXIndex index,
   ) {
     return _clang_disposeIndex(
       index,
@@ -118,13 +120,14 @@
   }
 
   late final _clang_disposeIndex_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeIndex>>('clang_disposeIndex');
-  late final _dart_clang_disposeIndex _clang_disposeIndex =
-      _clang_disposeIndex_ptr.asFunction<_dart_clang_disposeIndex>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXIndex)>>(
+          'clang_disposeIndex');
+  late final _clang_disposeIndex =
+      _clang_disposeIndex_ptr.asFunction<void Function(CXIndex)>();
 
   /// Retrieve the complete file and path name of the given file.
   CXString clang_getFileName(
-    ffi.Pointer<ffi.Void> SFile,
+    CXFile SFile,
   ) {
     return _clang_getFileName(
       SFile,
@@ -132,9 +135,10 @@
   }
 
   late final _clang_getFileName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFileName>>('clang_getFileName');
-  late final _dart_clang_getFileName _clang_getFileName =
-      _clang_getFileName_ptr.asFunction<_dart_clang_getFileName>();
+      _lookup<ffi.NativeFunction<CXString Function(CXFile)>>(
+          'clang_getFileName');
+  late final _clang_getFileName =
+      _clang_getFileName_ptr.asFunction<CXString Function(CXFile)>();
 
   /// Determine whether two ranges are equivalent.
   ///
@@ -149,10 +153,12 @@
     );
   }
 
-  late final _clang_equalRanges_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_equalRanges>>('clang_equalRanges');
-  late final _dart_clang_equalRanges _clang_equalRanges =
-      _clang_equalRanges_ptr.asFunction<_dart_clang_equalRanges>();
+  late final _clang_equalRanges_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(
+              CXSourceRange, CXSourceRange)>>('clang_equalRanges');
+  late final _clang_equalRanges = _clang_equalRanges_ptr
+      .asFunction<int Function(CXSourceRange, CXSourceRange)>();
 
   /// Retrieve the file, line, column, and offset represented by
   /// the given source location.
@@ -177,7 +183,7 @@
   /// buffer to which the given source location points.
   void clang_getFileLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -191,16 +197,26 @@
     );
   }
 
-  late final _clang_getFileLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFileLocation>>(
-          'clang_getFileLocation');
-  late final _dart_clang_getFileLocation _clang_getFileLocation =
-      _clang_getFileLocation_ptr.asFunction<_dart_clang_getFileLocation>();
+  late final _clang_getFileLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_getFileLocation');
+  late final _clang_getFileLocation = _clang_getFileLocation_ptr.asFunction<
+      void Function(
+          CXSourceLocation,
+          ffi.Pointer<CXFile>,
+          ffi.Pointer<ffi.Uint32>,
+          ffi.Pointer<ffi.Uint32>,
+          ffi.Pointer<ffi.Uint32>)>();
 
   /// Determine the number of diagnostics produced for the given
   /// translation unit.
   int clang_getNumDiagnostics(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+    CXTranslationUnit Unit,
   ) {
     return _clang_getNumDiagnostics(
       Unit,
@@ -208,10 +224,10 @@
   }
 
   late final _clang_getNumDiagnostics_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumDiagnostics>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXTranslationUnit)>>(
           'clang_getNumDiagnostics');
-  late final _dart_clang_getNumDiagnostics _clang_getNumDiagnostics =
-      _clang_getNumDiagnostics_ptr.asFunction<_dart_clang_getNumDiagnostics>();
+  late final _clang_getNumDiagnostics = _clang_getNumDiagnostics_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Retrieve a diagnostic associated with the given translation unit.
   ///
@@ -220,8 +236,8 @@
   ///
   /// \returns the requested diagnostic. This diagnostic must be freed
   /// via a call to \c clang_disposeDiagnostic().
-  ffi.Pointer<ffi.Void> clang_getDiagnostic(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+  CXDiagnostic clang_getDiagnostic(
+    CXTranslationUnit Unit,
     int Index,
   ) {
     return _clang_getDiagnostic(
@@ -230,15 +246,16 @@
     );
   }
 
-  late final _clang_getDiagnostic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnostic>>(
-          'clang_getDiagnostic');
-  late final _dart_clang_getDiagnostic _clang_getDiagnostic =
-      _clang_getDiagnostic_ptr.asFunction<_dart_clang_getDiagnostic>();
+  late final _clang_getDiagnostic_ptr = _lookup<
+      ffi.NativeFunction<
+          CXDiagnostic Function(
+              CXTranslationUnit, ffi.Uint32)>>('clang_getDiagnostic');
+  late final _clang_getDiagnostic = _clang_getDiagnostic_ptr
+      .asFunction<CXDiagnostic Function(CXTranslationUnit, int)>();
 
   /// Destroy a diagnostic.
   void clang_disposeDiagnostic(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
   ) {
     return _clang_disposeDiagnostic(
       Diagnostic,
@@ -246,10 +263,10 @@
   }
 
   late final _clang_disposeDiagnostic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeDiagnostic>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXDiagnostic)>>(
           'clang_disposeDiagnostic');
-  late final _dart_clang_disposeDiagnostic _clang_disposeDiagnostic =
-      _clang_disposeDiagnostic_ptr.asFunction<_dart_clang_disposeDiagnostic>();
+  late final _clang_disposeDiagnostic =
+      _clang_disposeDiagnostic_ptr.asFunction<void Function(CXDiagnostic)>();
 
   /// Format the given diagnostic in a manner that is suitable for display.
   ///
@@ -265,7 +282,7 @@
   ///
   /// \returns A new string containing for formatted diagnostic.
   CXString clang_formatDiagnostic(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
     int Options,
   ) {
     return _clang_formatDiagnostic(
@@ -275,17 +292,17 @@
   }
 
   late final _clang_formatDiagnostic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_formatDiagnostic>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXDiagnostic, ffi.Uint32)>>(
           'clang_formatDiagnostic');
-  late final _dart_clang_formatDiagnostic _clang_formatDiagnostic =
-      _clang_formatDiagnostic_ptr.asFunction<_dart_clang_formatDiagnostic>();
+  late final _clang_formatDiagnostic = _clang_formatDiagnostic_ptr
+      .asFunction<CXString Function(CXDiagnostic, int)>();
 
   /// Same as \c clang_parseTranslationUnit2, but returns
   /// the \c CXTranslationUnit instead of an error code.  In case of an error this
   /// routine returns a \c NULL \c CXTranslationUnit, without further detailed
   /// error codes.
-  ffi.Pointer<CXTranslationUnitImpl> clang_parseTranslationUnit(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXTranslationUnit clang_parseTranslationUnit(
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
     int num_command_line_args,
@@ -304,16 +321,30 @@
     );
   }
 
-  late final _clang_parseTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_parseTranslationUnit>>(
-          'clang_parseTranslationUnit');
-  late final _dart_clang_parseTranslationUnit _clang_parseTranslationUnit =
-      _clang_parseTranslationUnit_ptr
-          .asFunction<_dart_clang_parseTranslationUnit>();
+  late final _clang_parseTranslationUnit_ptr = _lookup<
+      ffi.NativeFunction<
+          CXTranslationUnit Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32,
+              ffi.Pointer<CXUnsavedFile>,
+              ffi.Uint32,
+              ffi.Uint32)>>('clang_parseTranslationUnit');
+  late final _clang_parseTranslationUnit =
+      _clang_parseTranslationUnit_ptr.asFunction<
+          CXTranslationUnit Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              int)>();
 
   /// Destroy the specified CXTranslationUnit object.
   void clang_disposeTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_disposeTranslationUnit(
       arg0,
@@ -321,18 +352,17 @@
   }
 
   late final _clang_disposeTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeTranslationUnit>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXTranslationUnit)>>(
           'clang_disposeTranslationUnit');
-  late final _dart_clang_disposeTranslationUnit _clang_disposeTranslationUnit =
-      _clang_disposeTranslationUnit_ptr
-          .asFunction<_dart_clang_disposeTranslationUnit>();
+  late final _clang_disposeTranslationUnit = _clang_disposeTranslationUnit_ptr
+      .asFunction<void Function(CXTranslationUnit)>();
 
   /// Retrieve the cursor that represents the given translation unit.
   ///
   /// The translation unit cursor can be used to start traversing the
   /// various declarations within the given translation unit.
   CXCursor clang_getTranslationUnitCursor(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_getTranslationUnitCursor(
       arg0,
@@ -340,11 +370,11 @@
   }
 
   late final _clang_getTranslationUnitCursor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTranslationUnitCursor>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXTranslationUnit)>>(
           'clang_getTranslationUnitCursor');
-  late final _dart_clang_getTranslationUnitCursor
-      _clang_getTranslationUnitCursor = _clang_getTranslationUnitCursor_ptr
-          .asFunction<_dart_clang_getTranslationUnitCursor>();
+  late final _clang_getTranslationUnitCursor =
+      _clang_getTranslationUnitCursor_ptr
+          .asFunction<CXCursor Function(CXTranslationUnit)>();
 
   /// Returns non-zero if \p cursor is null.
   int clang_Cursor_isNull(
@@ -356,10 +386,10 @@
   }
 
   late final _clang_Cursor_isNull_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isNull>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_isNull');
-  late final _dart_clang_Cursor_isNull _clang_Cursor_isNull =
-      _clang_Cursor_isNull_ptr.asFunction<_dart_clang_Cursor_isNull>();
+  late final _clang_Cursor_isNull =
+      _clang_Cursor_isNull_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the kind of the given cursor.
   int clang_getCursorKind(
@@ -371,10 +401,10 @@
   }
 
   late final _clang_getCursorKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorKind');
-  late final _dart_clang_getCursorKind _clang_getCursorKind =
-      _clang_getCursorKind_ptr.asFunction<_dart_clang_getCursorKind>();
+  late final _clang_getCursorKind =
+      _clang_getCursorKind_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor has any attributes.
   int clang_Cursor_hasAttrs(
@@ -386,10 +416,10 @@
   }
 
   late final _clang_Cursor_hasAttrs_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_hasAttrs>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_hasAttrs');
-  late final _dart_clang_Cursor_hasAttrs _clang_Cursor_hasAttrs =
-      _clang_Cursor_hasAttrs_ptr.asFunction<_dart_clang_Cursor_hasAttrs>();
+  late final _clang_Cursor_hasAttrs =
+      _clang_Cursor_hasAttrs_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the physical location of the source constructor referenced
   /// by the given cursor.
@@ -408,10 +438,10 @@
   }
 
   late final _clang_getCursorLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorLocation>>(
+      _lookup<ffi.NativeFunction<CXSourceLocation Function(CXCursor)>>(
           'clang_getCursorLocation');
-  late final _dart_clang_getCursorLocation _clang_getCursorLocation =
-      _clang_getCursorLocation_ptr.asFunction<_dart_clang_getCursorLocation>();
+  late final _clang_getCursorLocation = _clang_getCursorLocation_ptr
+      .asFunction<CXSourceLocation Function(CXCursor)>();
 
   /// Retrieve the type of a CXCursor (if any).
   CXType clang_getCursorType(
@@ -423,10 +453,10 @@
   }
 
   late final _clang_getCursorType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_getCursorType');
-  late final _dart_clang_getCursorType _clang_getCursorType =
-      _clang_getCursorType_ptr.asFunction<_dart_clang_getCursorType>();
+  late final _clang_getCursorType =
+      _clang_getCursorType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Pretty-print the underlying type using the rules of the
   /// language of the translation unit from which it came.
@@ -441,10 +471,10 @@
   }
 
   late final _clang_getTypeSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypeSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXType)>>(
           'clang_getTypeSpelling');
-  late final _dart_clang_getTypeSpelling _clang_getTypeSpelling =
-      _clang_getTypeSpelling_ptr.asFunction<_dart_clang_getTypeSpelling>();
+  late final _clang_getTypeSpelling =
+      _clang_getTypeSpelling_ptr.asFunction<CXString Function(CXType)>();
 
   /// Retrieve the underlying type of a typedef declaration.
   ///
@@ -459,12 +489,11 @@
   }
 
   late final _clang_getTypedefDeclUnderlyingType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypedefDeclUnderlyingType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_getTypedefDeclUnderlyingType');
-  late final _dart_clang_getTypedefDeclUnderlyingType
-      _clang_getTypedefDeclUnderlyingType =
+  late final _clang_getTypedefDeclUnderlyingType =
       _clang_getTypedefDeclUnderlyingType_ptr
-          .asFunction<_dart_clang_getTypedefDeclUnderlyingType>();
+          .asFunction<CXType Function(CXCursor)>();
 
   /// Retrieve the integer value of an enum constant declaration as a signed
   /// long long.
@@ -481,11 +510,10 @@
   }
 
   late final _clang_getEnumConstantDeclValue_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getEnumConstantDeclValue>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXCursor)>>(
           'clang_getEnumConstantDeclValue');
-  late final _dart_clang_getEnumConstantDeclValue
-      _clang_getEnumConstantDeclValue = _clang_getEnumConstantDeclValue_ptr
-          .asFunction<_dart_clang_getEnumConstantDeclValue>();
+  late final _clang_getEnumConstantDeclValue =
+      _clang_getEnumConstantDeclValue_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the bit width of a bit field declaration as an integer.
   ///
@@ -499,11 +527,10 @@
   }
 
   late final _clang_getFieldDeclBitWidth_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFieldDeclBitWidth>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getFieldDeclBitWidth');
-  late final _dart_clang_getFieldDeclBitWidth _clang_getFieldDeclBitWidth =
-      _clang_getFieldDeclBitWidth_ptr
-          .asFunction<_dart_clang_getFieldDeclBitWidth>();
+  late final _clang_getFieldDeclBitWidth =
+      _clang_getFieldDeclBitWidth_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the number of non-variadic arguments associated with a given
   /// cursor.
@@ -519,11 +546,10 @@
   }
 
   late final _clang_Cursor_getNumArguments_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getNumArguments>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_getNumArguments');
-  late final _dart_clang_Cursor_getNumArguments _clang_Cursor_getNumArguments =
-      _clang_Cursor_getNumArguments_ptr
-          .asFunction<_dart_clang_Cursor_getNumArguments>();
+  late final _clang_Cursor_getNumArguments =
+      _clang_Cursor_getNumArguments_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the argument cursor of a function or method.
   ///
@@ -541,11 +567,10 @@
   }
 
   late final _clang_Cursor_getArgument_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getArgument>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor, ffi.Uint32)>>(
           'clang_Cursor_getArgument');
-  late final _dart_clang_Cursor_getArgument _clang_Cursor_getArgument =
-      _clang_Cursor_getArgument_ptr
-          .asFunction<_dart_clang_Cursor_getArgument>();
+  late final _clang_Cursor_getArgument = _clang_Cursor_getArgument_ptr
+      .asFunction<CXCursor Function(CXCursor, int)>();
 
   /// Return the canonical type for a CXType.
   ///
@@ -562,10 +587,10 @@
   }
 
   late final _clang_getCanonicalType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCanonicalType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getCanonicalType');
-  late final _dart_clang_getCanonicalType _clang_getCanonicalType =
-      _clang_getCanonicalType_ptr.asFunction<_dart_clang_getCanonicalType>();
+  late final _clang_getCanonicalType =
+      _clang_getCanonicalType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Determine whether a  CXCursor that is a macro, is
   /// function like.
@@ -578,11 +603,11 @@
   }
 
   late final _clang_Cursor_isMacroFunctionLike_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isMacroFunctionLike>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isMacroFunctionLike');
-  late final _dart_clang_Cursor_isMacroFunctionLike
-      _clang_Cursor_isMacroFunctionLike = _clang_Cursor_isMacroFunctionLike_ptr
-          .asFunction<_dart_clang_Cursor_isMacroFunctionLike>();
+  late final _clang_Cursor_isMacroFunctionLike =
+      _clang_Cursor_isMacroFunctionLike_ptr
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine whether a  CXCursor that is a macro, is a
   /// builtin one.
@@ -595,11 +620,10 @@
   }
 
   late final _clang_Cursor_isMacroBuiltin_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isMacroBuiltin>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isMacroBuiltin');
-  late final _dart_clang_Cursor_isMacroBuiltin _clang_Cursor_isMacroBuiltin =
-      _clang_Cursor_isMacroBuiltin_ptr
-          .asFunction<_dart_clang_Cursor_isMacroBuiltin>();
+  late final _clang_Cursor_isMacroBuiltin =
+      _clang_Cursor_isMacroBuiltin_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether a  CXCursor that is a function declaration, is an
   /// inline declaration.
@@ -612,11 +636,10 @@
   }
 
   late final _clang_Cursor_isFunctionInlined_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isFunctionInlined>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isFunctionInlined');
-  late final _dart_clang_Cursor_isFunctionInlined
-      _clang_Cursor_isFunctionInlined = _clang_Cursor_isFunctionInlined_ptr
-          .asFunction<_dart_clang_Cursor_isFunctionInlined>();
+  late final _clang_Cursor_isFunctionInlined =
+      _clang_Cursor_isFunctionInlined_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the typedef name of the given type.
   CXString clang_getTypedefName(
@@ -628,10 +651,10 @@
   }
 
   late final _clang_getTypedefName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypedefName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXType)>>(
           'clang_getTypedefName');
-  late final _dart_clang_getTypedefName _clang_getTypedefName =
-      _clang_getTypedefName_ptr.asFunction<_dart_clang_getTypedefName>();
+  late final _clang_getTypedefName =
+      _clang_getTypedefName_ptr.asFunction<CXString Function(CXType)>();
 
   /// For pointer types, returns the type of the pointee.
   CXType clang_getPointeeType(
@@ -643,10 +666,10 @@
   }
 
   late final _clang_getPointeeType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getPointeeType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getPointeeType');
-  late final _dart_clang_getPointeeType _clang_getPointeeType =
-      _clang_getPointeeType_ptr.asFunction<_dart_clang_getPointeeType>();
+  late final _clang_getPointeeType =
+      _clang_getPointeeType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the cursor for the declaration of the given type.
   CXCursor clang_getTypeDeclaration(
@@ -658,11 +681,10 @@
   }
 
   late final _clang_getTypeDeclaration_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypeDeclaration>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXType)>>(
           'clang_getTypeDeclaration');
-  late final _dart_clang_getTypeDeclaration _clang_getTypeDeclaration =
-      _clang_getTypeDeclaration_ptr
-          .asFunction<_dart_clang_getTypeDeclaration>();
+  late final _clang_getTypeDeclaration =
+      _clang_getTypeDeclaration_ptr.asFunction<CXCursor Function(CXType)>();
 
   /// Retrieve the spelling of a given CXTypeKind.
   CXString clang_getTypeKindSpelling(
@@ -674,11 +696,10 @@
   }
 
   late final _clang_getTypeKindSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypeKindSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(ffi.Int32)>>(
           'clang_getTypeKindSpelling');
-  late final _dart_clang_getTypeKindSpelling _clang_getTypeKindSpelling =
-      _clang_getTypeKindSpelling_ptr
-          .asFunction<_dart_clang_getTypeKindSpelling>();
+  late final _clang_getTypeKindSpelling =
+      _clang_getTypeKindSpelling_ptr.asFunction<CXString Function(int)>();
 
   /// Retrieve the return type associated with a function type.
   ///
@@ -692,10 +713,10 @@
   }
 
   late final _clang_getResultType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getResultType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getResultType');
-  late final _dart_clang_getResultType _clang_getResultType =
-      _clang_getResultType_ptr.asFunction<_dart_clang_getResultType>();
+  late final _clang_getResultType =
+      _clang_getResultType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Retrieve the number of non-variadic parameters associated with a
   /// function type.
@@ -710,10 +731,10 @@
   }
 
   late final _clang_getNumArgTypes_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumArgTypes>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXType)>>(
           'clang_getNumArgTypes');
-  late final _dart_clang_getNumArgTypes _clang_getNumArgTypes =
-      _clang_getNumArgTypes_ptr.asFunction<_dart_clang_getNumArgTypes>();
+  late final _clang_getNumArgTypes =
+      _clang_getNumArgTypes_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the type of a parameter of a function type.
   ///
@@ -730,9 +751,10 @@
   }
 
   late final _clang_getArgType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getArgType>>('clang_getArgType');
-  late final _dart_clang_getArgType _clang_getArgType =
-      _clang_getArgType_ptr.asFunction<_dart_clang_getArgType>();
+      _lookup<ffi.NativeFunction<CXType Function(CXType, ffi.Uint32)>>(
+          'clang_getArgType');
+  late final _clang_getArgType =
+      _clang_getArgType_ptr.asFunction<CXType Function(CXType, int)>();
 
   /// Return the number of elements of an array or vector type.
   ///
@@ -747,10 +769,10 @@
   }
 
   late final _clang_getNumElements_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumElements>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXType)>>(
           'clang_getNumElements');
-  late final _dart_clang_getNumElements _clang_getNumElements =
-      _clang_getNumElements_ptr.asFunction<_dart_clang_getNumElements>();
+  late final _clang_getNumElements =
+      _clang_getNumElements_ptr.asFunction<int Function(CXType)>();
 
   /// Return the element type of an array type.
   ///
@@ -764,11 +786,10 @@
   }
 
   late final _clang_getArrayElementType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getArrayElementType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getArrayElementType');
-  late final _dart_clang_getArrayElementType _clang_getArrayElementType =
-      _clang_getArrayElementType_ptr
-          .asFunction<_dart_clang_getArrayElementType>();
+  late final _clang_getArrayElementType =
+      _clang_getArrayElementType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Retrieve the type named by the qualified-id.
   ///
@@ -782,10 +803,10 @@
   }
 
   late final _clang_Type_getNamedType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getNamedType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_Type_getNamedType');
-  late final _dart_clang_Type_getNamedType _clang_Type_getNamedType =
-      _clang_Type_getNamedType_ptr.asFunction<_dart_clang_Type_getNamedType>();
+  late final _clang_Type_getNamedType =
+      _clang_Type_getNamedType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the alignment of a type in bytes as per C++[expr.alignof]
   /// standard.
@@ -806,10 +827,10 @@
   }
 
   late final _clang_Type_getAlignOf_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getAlignOf>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXType)>>(
           'clang_Type_getAlignOf');
-  late final _dart_clang_Type_getAlignOf _clang_Type_getAlignOf =
-      _clang_Type_getAlignOf_ptr.asFunction<_dart_clang_Type_getAlignOf>();
+  late final _clang_Type_getAlignOf =
+      _clang_Type_getAlignOf_ptr.asFunction<int Function(CXType)>();
 
   /// Determine whether the given cursor represents an anonymous
   /// tag or namespace
@@ -822,11 +843,10 @@
   }
 
   late final _clang_Cursor_isAnonymous_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isAnonymous>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isAnonymous');
-  late final _dart_clang_Cursor_isAnonymous _clang_Cursor_isAnonymous =
-      _clang_Cursor_isAnonymous_ptr
-          .asFunction<_dart_clang_Cursor_isAnonymous>();
+  late final _clang_Cursor_isAnonymous =
+      _clang_Cursor_isAnonymous_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor represents an anonymous record
   /// declaration.
@@ -839,12 +859,11 @@
   }
 
   late final _clang_Cursor_isAnonymousRecordDecl_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isAnonymousRecordDecl>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isAnonymousRecordDecl');
-  late final _dart_clang_Cursor_isAnonymousRecordDecl
-      _clang_Cursor_isAnonymousRecordDecl =
+  late final _clang_Cursor_isAnonymousRecordDecl =
       _clang_Cursor_isAnonymousRecordDecl_ptr
-          .asFunction<_dart_clang_Cursor_isAnonymousRecordDecl>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Visit the children of a particular cursor.
   ///
@@ -868,8 +887,8 @@
   /// prematurely by the visitor returning \c CXChildVisit_Break.
   int clang_visitChildren(
     CXCursor parent,
-    ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-    ffi.Pointer<ffi.Void> client_data,
+    CXCursorVisitor visitor,
+    CXClientData client_data,
   ) {
     return _clang_visitChildren(
       parent,
@@ -878,11 +897,12 @@
     );
   }
 
-  late final _clang_visitChildren_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_visitChildren>>(
-          'clang_visitChildren');
-  late final _dart_clang_visitChildren _clang_visitChildren =
-      _clang_visitChildren_ptr.asFunction<_dart_clang_visitChildren>();
+  late final _clang_visitChildren_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(
+              CXCursor, CXCursorVisitor, CXClientData)>>('clang_visitChildren');
+  late final _clang_visitChildren = _clang_visitChildren_ptr
+      .asFunction<int Function(CXCursor, CXCursorVisitor, CXClientData)>();
 
   /// Retrieve a Unified Symbol Resolution (USR) for the entity referenced
   /// by the given cursor.
@@ -900,9 +920,10 @@
   }
 
   late final _clang_getCursorUSR_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorUSR>>('clang_getCursorUSR');
-  late final _dart_clang_getCursorUSR _clang_getCursorUSR =
-      _clang_getCursorUSR_ptr.asFunction<_dart_clang_getCursorUSR>();
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
+          'clang_getCursorUSR');
+  late final _clang_getCursorUSR =
+      _clang_getCursorUSR_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// Retrieve a name for the entity referenced by this cursor.
   CXString clang_getCursorSpelling(
@@ -914,10 +935,10 @@
   }
 
   late final _clang_getCursorSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_getCursorSpelling');
-  late final _dart_clang_getCursorSpelling _clang_getCursorSpelling =
-      _clang_getCursorSpelling_ptr.asFunction<_dart_clang_getCursorSpelling>();
+  late final _clang_getCursorSpelling =
+      _clang_getCursorSpelling_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// For a cursor that is either a reference to or a declaration
   /// of some entity, retrieve a cursor that describes the definition of
@@ -954,11 +975,10 @@
   }
 
   late final _clang_getCursorDefinition_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorDefinition>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor)>>(
           'clang_getCursorDefinition');
-  late final _dart_clang_getCursorDefinition _clang_getCursorDefinition =
-      _clang_getCursorDefinition_ptr
-          .asFunction<_dart_clang_getCursorDefinition>();
+  late final _clang_getCursorDefinition =
+      _clang_getCursorDefinition_ptr.asFunction<CXCursor Function(CXCursor)>();
 
   /// Given a cursor that represents a declaration, return the associated
   /// comment's source range.  The range may include multiple consecutive comments
@@ -972,11 +992,10 @@
   }
 
   late final _clang_Cursor_getCommentRange_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getCommentRange>>(
+      _lookup<ffi.NativeFunction<CXSourceRange Function(CXCursor)>>(
           'clang_Cursor_getCommentRange');
-  late final _dart_clang_Cursor_getCommentRange _clang_Cursor_getCommentRange =
-      _clang_Cursor_getCommentRange_ptr
-          .asFunction<_dart_clang_Cursor_getCommentRange>();
+  late final _clang_Cursor_getCommentRange = _clang_Cursor_getCommentRange_ptr
+      .asFunction<CXSourceRange Function(CXCursor)>();
 
   /// Given a cursor that represents a declaration, return the associated
   /// comment text, including comment markers.
@@ -989,11 +1008,11 @@
   }
 
   late final _clang_Cursor_getRawCommentText_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getRawCommentText>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_Cursor_getRawCommentText');
-  late final _dart_clang_Cursor_getRawCommentText
-      _clang_Cursor_getRawCommentText = _clang_Cursor_getRawCommentText_ptr
-          .asFunction<_dart_clang_Cursor_getRawCommentText>();
+  late final _clang_Cursor_getRawCommentText =
+      _clang_Cursor_getRawCommentText_ptr
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Given a cursor that represents a documentable entity (e.g.,
   /// declaration), return the associated \paragraph; otherwise return the
@@ -1007,11 +1026,11 @@
   }
 
   late final _clang_Cursor_getBriefCommentText_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getBriefCommentText>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_Cursor_getBriefCommentText');
-  late final _dart_clang_Cursor_getBriefCommentText
-      _clang_Cursor_getBriefCommentText = _clang_Cursor_getBriefCommentText_ptr
-          .asFunction<_dart_clang_Cursor_getBriefCommentText>();
+  late final _clang_Cursor_getBriefCommentText =
+      _clang_Cursor_getBriefCommentText_ptr
+          .asFunction<CXString Function(CXCursor)>();
 
   /// \defgroup CINDEX_DEBUG Debugging facilities
   ///
@@ -1028,16 +1047,15 @@
   }
 
   late final _clang_getCursorKindSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorKindSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(ffi.Int32)>>(
           'clang_getCursorKindSpelling');
-  late final _dart_clang_getCursorKindSpelling _clang_getCursorKindSpelling =
-      _clang_getCursorKindSpelling_ptr
-          .asFunction<_dart_clang_getCursorKindSpelling>();
+  late final _clang_getCursorKindSpelling =
+      _clang_getCursorKindSpelling_ptr.asFunction<CXString Function(int)>();
 
   /// If cursor is a statement declaration tries to evaluate the
   /// statement and if its variable, tries to evaluate its initializer,
   /// into its corresponding type.
-  ffi.Pointer<ffi.Void> clang_Cursor_Evaluate(
+  CXEvalResult clang_Cursor_Evaluate(
     CXCursor C,
   ) {
     return _clang_Cursor_Evaluate(
@@ -1046,14 +1064,14 @@
   }
 
   late final _clang_Cursor_Evaluate_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_Evaluate>>(
+      _lookup<ffi.NativeFunction<CXEvalResult Function(CXCursor)>>(
           'clang_Cursor_Evaluate');
-  late final _dart_clang_Cursor_Evaluate _clang_Cursor_Evaluate =
-      _clang_Cursor_Evaluate_ptr.asFunction<_dart_clang_Cursor_Evaluate>();
+  late final _clang_Cursor_Evaluate =
+      _clang_Cursor_Evaluate_ptr.asFunction<CXEvalResult Function(CXCursor)>();
 
   /// Returns the kind of the evaluated result.
   int clang_EvalResult_getKind(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getKind(
       E,
@@ -1061,16 +1079,15 @@
   }
 
   late final _clang_EvalResult_getKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXEvalResult)>>(
           'clang_EvalResult_getKind');
-  late final _dart_clang_EvalResult_getKind _clang_EvalResult_getKind =
-      _clang_EvalResult_getKind_ptr
-          .asFunction<_dart_clang_EvalResult_getKind>();
+  late final _clang_EvalResult_getKind =
+      _clang_EvalResult_getKind_ptr.asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as integer if the
   /// kind is Int.
   int clang_EvalResult_getAsInt(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsInt(
       E,
@@ -1078,17 +1095,16 @@
   }
 
   late final _clang_EvalResult_getAsInt_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsInt>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXEvalResult)>>(
           'clang_EvalResult_getAsInt');
-  late final _dart_clang_EvalResult_getAsInt _clang_EvalResult_getAsInt =
-      _clang_EvalResult_getAsInt_ptr
-          .asFunction<_dart_clang_EvalResult_getAsInt>();
+  late final _clang_EvalResult_getAsInt =
+      _clang_EvalResult_getAsInt_ptr.asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as a long long integer if the
   /// kind is Int. This prevents overflows that may happen if the result is
   /// returned with clang_EvalResult_getAsInt.
   int clang_EvalResult_getAsLongLong(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsLongLong(
       E,
@@ -1096,16 +1112,16 @@
   }
 
   late final _clang_EvalResult_getAsLongLong_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsLongLong>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXEvalResult)>>(
           'clang_EvalResult_getAsLongLong');
-  late final _dart_clang_EvalResult_getAsLongLong
-      _clang_EvalResult_getAsLongLong = _clang_EvalResult_getAsLongLong_ptr
-          .asFunction<_dart_clang_EvalResult_getAsLongLong>();
+  late final _clang_EvalResult_getAsLongLong =
+      _clang_EvalResult_getAsLongLong_ptr
+          .asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as double if the
   /// kind is double.
   double clang_EvalResult_getAsDouble(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsDouble(
       E,
@@ -1113,18 +1129,17 @@
   }
 
   late final _clang_EvalResult_getAsDouble_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsDouble>>(
+      _lookup<ffi.NativeFunction<ffi.Double Function(CXEvalResult)>>(
           'clang_EvalResult_getAsDouble');
-  late final _dart_clang_EvalResult_getAsDouble _clang_EvalResult_getAsDouble =
-      _clang_EvalResult_getAsDouble_ptr
-          .asFunction<_dart_clang_EvalResult_getAsDouble>();
+  late final _clang_EvalResult_getAsDouble = _clang_EvalResult_getAsDouble_ptr
+      .asFunction<double Function(CXEvalResult)>();
 
   /// Returns the evaluation result as a constant string if the
   /// kind is other than Int or float. User must not free this pointer,
   /// instead call clang_EvalResult_dispose on the CXEvalResult returned
   /// by clang_Cursor_Evaluate.
   ffi.Pointer<ffi.Int8> clang_EvalResult_getAsStr(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsStr(
       E,
@@ -1132,15 +1147,14 @@
   }
 
   late final _clang_EvalResult_getAsStr_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsStr>>(
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(CXEvalResult)>>(
           'clang_EvalResult_getAsStr');
-  late final _dart_clang_EvalResult_getAsStr _clang_EvalResult_getAsStr =
-      _clang_EvalResult_getAsStr_ptr
-          .asFunction<_dart_clang_EvalResult_getAsStr>();
+  late final _clang_EvalResult_getAsStr = _clang_EvalResult_getAsStr_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(CXEvalResult)>();
 
   /// Disposes the created Eval memory.
   void clang_EvalResult_dispose(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_dispose(
       E,
@@ -1148,11 +1162,10 @@
   }
 
   late final _clang_EvalResult_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXEvalResult)>>(
           'clang_EvalResult_dispose');
-  late final _dart_clang_EvalResult_dispose _clang_EvalResult_dispose =
-      _clang_EvalResult_dispose_ptr
-          .asFunction<_dart_clang_EvalResult_dispose>();
+  late final _clang_EvalResult_dispose =
+      _clang_EvalResult_dispose_ptr.asFunction<void Function(CXEvalResult)>();
 }
 
 /// A character string.
@@ -1189,6 +1202,13 @@
   external int Length;
 }
 
+/// An "index" that consists of a set of translation units that would
+/// typically be linked together into an executable or library.
+typedef CXIndex = ffi.Pointer<ffi.Void>;
+
+/// A particular source file that is part of a translation unit.
+typedef CXFile = ffi.Pointer<ffi.Void>;
+
 /// Identifies a specific source location within a translation
 /// unit.
 ///
@@ -1217,6 +1237,13 @@
   external int end_int_data;
 }
 
+/// A single translation unit, which resides in an index.
+typedef CXTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>;
+
+/// A single diagnostic, containing the diagnostic's severity,
+/// location, text, source ranges, and fix-it hints.
+typedef CXDiagnostic = ffi.Pointer<ffi.Void>;
+
 /// Options to control the display of diagnostics.
 ///
 /// The values in this enum are meant to be combined to customize the
@@ -2361,6 +2388,23 @@
   static const int CXChildVisit_Recurse = 2;
 }
 
+/// Visitor invoked for each cursor found by a traversal.
+///
+/// This visitor function will be invoked for each cursor found by
+/// clang_visitCursorChildren(). Its first argument is the cursor being
+/// visited, its second argument is the parent visitor for that cursor,
+/// and its third argument is the client data provided to
+/// clang_visitCursorChildren().
+///
+/// The visitor should return one of the \c CXChildVisitResult values
+/// to direct clang_visitCursorChildren().
+typedef CXCursorVisitor = ffi.Pointer<
+    ffi.NativeFunction<ffi.Int32 Function(CXCursor, CXCursor, CXClientData)>>;
+
+/// Opaque pointer representing client data that will be passed through
+/// to various callbacks and visitors.
+typedef CXClientData = ffi.Pointer<ffi.Void>;
+
 abstract class CXEvalResultKind {
   static const int CXEval_Int = 1;
   static const int CXEval_Float = 2;
@@ -2371,6 +2415,9 @@
   static const int CXEval_UnExposed = 0;
 }
 
+/// Evaluation result of a cursor
+typedef CXEvalResult = ffi.Pointer<ffi.Void>;
+
 const int CINDEX_VERSION_MAJOR = 0;
 
 const int CINDEX_VERSION_MINOR = 59;
@@ -2378,503 +2425,3 @@
 const int CINDEX_VERSION = 59;
 
 const String CINDEX_VERSION_STRING = '0.59';
-
-typedef _c_clang_getCString = ffi.Pointer<ffi.Int8> Function(
-  CXString string,
-);
-
-typedef _dart_clang_getCString = ffi.Pointer<ffi.Int8> Function(
-  CXString string,
-);
-
-typedef _c_clang_disposeString = ffi.Void Function(
-  CXString string,
-);
-
-typedef _dart_clang_disposeString = void Function(
-  CXString string,
-);
-
-typedef _c_clang_createIndex = ffi.Pointer<ffi.Void> Function(
-  ffi.Int32 excludeDeclarationsFromPCH,
-  ffi.Int32 displayDiagnostics,
-);
-
-typedef _dart_clang_createIndex = ffi.Pointer<ffi.Void> Function(
-  int excludeDeclarationsFromPCH,
-  int displayDiagnostics,
-);
-
-typedef _c_clang_disposeIndex = ffi.Void Function(
-  ffi.Pointer<ffi.Void> index,
-);
-
-typedef _dart_clang_disposeIndex = void Function(
-  ffi.Pointer<ffi.Void> index,
-);
-
-typedef _c_clang_getFileName = CXString Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileName = CXString Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _c_clang_equalRanges = ffi.Uint32 Function(
-  CXSourceRange range1,
-  CXSourceRange range2,
-);
-
-typedef _dart_clang_equalRanges = int Function(
-  CXSourceRange range1,
-  CXSourceRange range2,
-);
-
-typedef _c_clang_getFileLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getFileLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _c_clang_getNumDiagnostics = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getNumDiagnostics = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _c_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-  int Index,
-);
-
-typedef _c_clang_disposeDiagnostic = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_disposeDiagnostic = void Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _c_clang_formatDiagnostic = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  ffi.Uint32 Options,
-);
-
-typedef _dart_clang_formatDiagnostic = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  int Options,
-);
-
-typedef _c_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-);
-
-typedef _c_clang_disposeTranslationUnit = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_disposeTranslationUnit = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _c_clang_getTranslationUnitCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_getTranslationUnitCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _c_clang_Cursor_isNull = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_Cursor_isNull = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursorKind = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorKind = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_hasAttrs = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_hasAttrs = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getCursorLocation = CXSourceLocation Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorLocation = CXSourceLocation Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getCursorType = CXType Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getTypeSpelling = CXString Function(
-  CXType CT,
-);
-
-typedef _dart_clang_getTypeSpelling = CXString Function(
-  CXType CT,
-);
-
-typedef _c_clang_getTypedefDeclUnderlyingType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getTypedefDeclUnderlyingType = CXType Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getEnumConstantDeclValue = ffi.Int64 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getEnumConstantDeclValue = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getFieldDeclBitWidth = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getFieldDeclBitWidth = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getNumArguments = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getNumArguments = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getArgument = CXCursor Function(
-  CXCursor C,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Cursor_getArgument = CXCursor Function(
-  CXCursor C,
-  int i,
-);
-
-typedef _c_clang_getCanonicalType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getCanonicalType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_Cursor_isMacroFunctionLike = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isMacroFunctionLike = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isMacroBuiltin = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isMacroBuiltin = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isFunctionInlined = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isFunctionInlined = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getTypedefName = CXString Function(
-  CXType CT,
-);
-
-typedef _dart_clang_getTypedefName = CXString Function(
-  CXType CT,
-);
-
-typedef _c_clang_getPointeeType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getPointeeType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_getTypeDeclaration = CXCursor Function(
-  CXType T,
-);
-
-typedef _dart_clang_getTypeDeclaration = CXCursor Function(
-  CXType T,
-);
-
-typedef _c_clang_getTypeKindSpelling = CXString Function(
-  ffi.Int32 K,
-);
-
-typedef _dart_clang_getTypeKindSpelling = CXString Function(
-  int K,
-);
-
-typedef _c_clang_getResultType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getResultType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_getNumArgTypes = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getNumArgTypes = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getArgType = CXType Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_getArgType = CXType Function(
-  CXType T,
-  int i,
-);
-
-typedef _c_clang_getNumElements = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getNumElements = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getArrayElementType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getArrayElementType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getNamedType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNamedType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getAlignOf = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getAlignOf = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Cursor_isAnonymous = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isAnonymous = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isAnonymousRecordDecl = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isAnonymousRecordDecl = int Function(
-  CXCursor C,
-);
-
-typedef CXCursorVisitor = ffi.Int32 Function(
-  CXCursor,
-  CXCursor,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_clang_visitChildren = ffi.Uint32 Function(
-  CXCursor parent,
-  ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_visitChildren = int Function(
-  CXCursor parent,
-  ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _c_clang_getCursorUSR = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorUSR = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorSpelling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorSpelling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorDefinition = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorDefinition = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_getCommentRange = CXSourceRange Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getCommentRange = CXSourceRange Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getRawCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getRawCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getBriefCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getBriefCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getCursorKindSpelling = CXString Function(
-  ffi.Int32 Kind,
-);
-
-typedef _dart_clang_getCursorKindSpelling = CXString Function(
-  int Kind,
-);
-
-typedef _c_clang_Cursor_Evaluate = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_Evaluate = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _c_clang_EvalResult_getKind = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getKind = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsInt = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsInt = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsLongLong = ffi.Int64 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsLongLong = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsDouble = ffi.Double Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsDouble = double Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_dispose = void Function(
-  ffi.Pointer<ffi.Void> E,
-);
diff --git a/lib/src/header_parser/includer.dart b/lib/src/header_parser/includer.dart
index 1cd4ff1..9211d5f 100644
--- a/lib/src/header_parser/includer.dart
+++ b/lib/src/header_parser/includer.dart
@@ -2,83 +2,61 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'data.dart';
-
 /// Utility functions to check whether a binding should be parsed or not
 /// based on filters.
 
-bool shouldIncludeStruct(String usr, String name) {
-  if (bindingsIndex.isSeenStruct(usr) || name == '') {
+import 'data.dart';
+
+bool _shouldIncludeDecl(String usr, String name,
+    bool Function(String) isSeenDecl, bool Function(String) configIncludes) {
+  if (isSeenDecl(usr) || name == '') {
     return false;
-  } else if (config.structDecl.shouldInclude(name)) {
+  } else if (configIncludes(name)) {
     return true;
   } else {
     return false;
   }
 }
 
+bool shouldIncludeStruct(String usr, String name) {
+  return _shouldIncludeDecl(
+      usr, name, bindingsIndex.isSeenStruct, config.structDecl.shouldInclude);
+}
+
 bool shouldIncludeUnion(String usr, String name) {
-  if (bindingsIndex.isSeenStruct(usr) || name == '') {
-    return false;
-  } else if (config.unionDecl.shouldInclude(name)) {
-    return true;
-  } else {
-    return false;
-  }
+  return _shouldIncludeDecl(
+      usr, name, bindingsIndex.isSeenUnion, config.unionDecl.shouldInclude);
 }
 
 bool shouldIncludeFunc(String usr, String name) {
-  if (bindingsIndex.isSeenFunc(usr) || name == '') {
-    return false;
-  } else if (config.functionDecl.shouldInclude(name)) {
-    return true;
-  } else {
-    return false;
-  }
+  return _shouldIncludeDecl(
+      usr, name, bindingsIndex.isSeenFunc, config.functionDecl.shouldInclude);
 }
 
 bool shouldIncludeEnumClass(String usr, String name) {
-  if (bindingsIndex.isSeenEnumClass(usr) || name == '') {
-    return false;
-  } else if (config.enumClassDecl.shouldInclude(name)) {
-    return true;
-  } else {
-    return false;
-  }
+  return _shouldIncludeDecl(usr, name, bindingsIndex.isSeenEnumClass,
+      config.enumClassDecl.shouldInclude);
 }
 
 bool shouldIncludeUnnamedEnumConstant(String usr, String name) {
-  if (bindingsIndex.isSeenUnnamedEnumConstant(usr) || name == '') {
-    return false;
-  } else if (config.unnamedEnumConstants.shouldInclude(name)) {
-    return true;
-  } else {
-    return false;
-  }
+  return _shouldIncludeDecl(usr, name, bindingsIndex.isSeenUnnamedEnumConstant,
+      config.unnamedEnumConstants.shouldInclude);
 }
 
 bool shouldIncludeGlobalVar(String usr, String name) {
-  if (bindingsIndex.isSeenGlobalVar(usr) || name == '') {
-    return false;
-  } else if (config.globals.shouldInclude(name)) {
-    return true;
-  } else {
-    return false;
-  }
+  return _shouldIncludeDecl(
+      usr, name, bindingsIndex.isSeenGlobalVar, config.globals.shouldInclude);
 }
 
 bool shouldIncludeMacro(String usr, String name) {
-  if (bindingsIndex.isSeenMacro(usr) || name == '') {
-    return false;
-  } else if (config.macroDecl.shouldInclude(name)) {
-    return true;
-  } else {
-    return false;
-  }
+  return _shouldIncludeDecl(
+      usr, name, bindingsIndex.isSeenMacro, config.macroDecl.shouldInclude);
 }
 
-/// Cache for headers.
-final _headerCache = <String, bool>{};
+bool shouldIncludeTypealias(String usr, String name) {
+  return _shouldIncludeDecl(
+      usr, name, bindingsIndex.isSeenTypealias, config.typedefs.shouldInclude);
+}
 
 /// True if a cursor should be included based on headers config, used on root
 /// declarations.
@@ -88,11 +66,11 @@
     return false;
   }
 
-  // Add header to cache if its not.
-  if (!_headerCache.containsKey(sourceFile)) {
-    _headerCache[sourceFile] =
-        config.headers.includeFilter.shouldInclude(sourceFile);
+  // Add header to seen if it's not.
+  if (!bindingsIndex.isSeenHeader(sourceFile)) {
+    bindingsIndex.addHeaderToSeen(
+        sourceFile, config.headers.includeFilter.shouldInclude(sourceFile));
   }
 
-  return _headerCache[sourceFile]!;
+  return bindingsIndex.getSeenHeaderStatus(sourceFile)!;
 }
diff --git a/lib/src/header_parser/sub_parsers/compounddecl_parser.dart b/lib/src/header_parser/sub_parsers/compounddecl_parser.dart
index 82bac38..0bee37d 100644
--- a/lib/src/header_parser/sub_parsers/compounddecl_parser.dart
+++ b/lib/src/header_parser/sub_parsers/compounddecl_parser.dart
@@ -75,9 +75,6 @@
   clang_types.CXCursor cursor,
   CompoundType compoundType, {
 
-  /// Optionally provide name (useful in case declaration is inside a typedef).
-  String? name,
-
   /// Option to ignore declaration filter (Useful in case of extracting
   /// declarations when they are passed/returned by an included function.)
   bool ignoreFilter = false,
@@ -85,19 +82,9 @@
   /// To track if the declaration was used by reference(i.e T*). (Used to only
   /// generate these as opaque if `dependency-only` was set to opaque).
   bool pointerReference = false,
-
-  /// If the compound name should be updated, if it was already seen.
-  bool updateName = true,
 }) {
   _stack.push(_ParsedCompound());
 
-  // Parse the cursor definition instead, if this is a forward declaration.
-  if (isForwardDeclaration(cursor)) {
-    cursor = clang.clang_getCursorDefinition(cursor);
-  }
-  final declUsr = cursor.usr();
-  final declName = name ?? cursor.spelling();
-
   // Set includer functions according to compoundType.
   final bool Function(String, String) shouldIncludeDecl;
   final bool Function(String) isSeenDecl;
@@ -124,6 +111,25 @@
       break;
   }
 
+  // Parse the cursor definition instead, if this is a forward declaration.
+  if (isForwardDeclaration(cursor)) {
+    cursor = clang.clang_getCursorDefinition(cursor);
+  }
+  final declUsr = cursor.usr();
+  final String declName;
+
+  // Only set name using USR if the type is not Anonymous (A struct is anonymous
+  // if it has no name, is not inside any typedef and declared inline inside
+  // another declaration).
+  if (clang.clang_Cursor_isAnonymous(cursor) == 0) {
+    // This gives the significant name, i.e name of the struct if defined or
+    // name of the first typedef declaration that refers to it.
+    declName = declUsr.split('@').last;
+  } else {
+    // Empty names are treated as inline declarations.
+    declName = '';
+  }
+
   if (declName.isEmpty) {
     if (ignoreFilter) {
       // This declaration is defined inside some other declaration and hence
@@ -136,24 +142,22 @@
       );
       _setMembers(cursor, className);
     } else {
-      _logger.finest('unnamed $className or typedef $className declaration');
+      _logger.finest('unnamed $className declaration');
     }
-  } else {
-    if ((ignoreFilter || shouldIncludeDecl(declUsr, declName)) &&
-        (!isSeenDecl(declUsr))) {
-      _logger.fine(
-          '++++ Adding $className: Name: $declName, ${cursor.completeStringRepr()}');
-      _stack.top.compound = Compound.fromType(
-        type: compoundType,
-        usr: declUsr,
-        originalName: declName,
-        name: configDecl.renameUsingConfig(declName),
-        dartDoc: getCursorDocComment(cursor),
-      );
-      // Adding to seen here to stop recursion if a declaration has itself as a
-      // member, members are updated later.
-      addDeclToSeen(declUsr, _stack.top.compound!);
-    }
+  } else if ((ignoreFilter || shouldIncludeDecl(declUsr, declName)) &&
+      (!isSeenDecl(declUsr))) {
+    _logger.fine(
+        '++++ Adding $className: Name: $declName, ${cursor.completeStringRepr()}');
+    _stack.top.compound = Compound.fromType(
+      type: compoundType,
+      usr: declUsr,
+      originalName: declName,
+      name: configDecl.renameUsingConfig(declName),
+      dartDoc: getCursorDocComment(cursor),
+    );
+    // Adding to seen here to stop recursion if a declaration has itself as a
+    // member, members are updated later.
+    addDeclToSeen(declUsr, _stack.top.compound!);
   }
 
   if (isSeenDecl(declUsr)) {
@@ -177,11 +181,6 @@
     } else if (!_stack.top.compound!.parsedDependencies) {
       _logger.fine('Skipped dependencies.');
     }
-
-    if (updateName) {
-      // If struct is seen, update it's name.
-      _stack.top.compound!.name = configDecl.renameUsingConfig(declName);
-    }
   }
 
   return _stack.pop().compound;
diff --git a/lib/src/header_parser/sub_parsers/enumdecl_parser.dart b/lib/src/header_parser/sub_parsers/enumdecl_parser.dart
index 7e09598..52cb4ba 100644
--- a/lib/src/header_parser/sub_parsers/enumdecl_parser.dart
+++ b/lib/src/header_parser/sub_parsers/enumdecl_parser.dart
@@ -24,12 +24,13 @@
 
 final _stack = Stack<_ParsedEnum>();
 
-/// Parses a function declaration.
+/// Parses an enum declaration.
 EnumClass? parseEnumDeclaration(
   clang_types.CXCursor cursor, {
 
-  /// Optionally provide name to use (useful in case enum is inside a typedef).
-  String? name,
+  /// Option to ignore declaration filter (Useful in case of extracting
+  /// declarations when they are passed/returned by an included function.)
+  bool ignoreFilter = false,
 }) {
   _stack.push(_ParsedEnum());
 
@@ -39,16 +40,22 @@
   }
 
   final enumUsr = cursor.usr();
-  final enumName = name ?? cursor.spelling();
-  if (enumName == '') {
-    // Save this unnamed enum if it is anonymous (therefore not in a typedef).
-    if (clang.clang_Cursor_isAnonymous(cursor) != 0) {
-      _logger.fine('Saving anonymous enum.');
-      saveUnNamedEnum(cursor);
-    } else {
-      _logger.fine('Unnamed enum inside a typedef.');
-    }
-  } else if (shouldIncludeEnumClass(enumUsr, enumName)) {
+  final String enumName;
+  // Only set name using USR if the type is not Anonymous (i.e not inside
+  // any typedef and declared inplace inside another type).
+  if (clang.clang_Cursor_isAnonymous(cursor) == 0) {
+    // This gives the significant name, i.e name of the enum if defined or
+    // name of the first typedef declaration that refers to it.
+    enumName = enumUsr.split('@').last;
+  } else {
+    enumName = '';
+  }
+
+  if (enumName.isEmpty) {
+    _logger.fine('Saving anonymous enum.');
+    saveUnNamedEnum(cursor);
+  } else if ((ignoreFilter || shouldIncludeEnumClass(enumUsr, enumName)) &&
+      (!bindingsIndex.isSeenEnumClass(enumUsr))) {
     _logger.fine('++++ Adding Enum: ${cursor.completeStringRepr()}');
     _stack.top.enumClass = EnumClass(
       usr: enumUsr,
@@ -61,10 +68,6 @@
   }
   if (bindingsIndex.isSeenEnumClass(enumUsr)) {
     _stack.top.enumClass = bindingsIndex.getSeenEnumClass(enumUsr);
-
-    // If enum is seen, update it's name.
-    _stack.top.enumClass!.name =
-        config.enumClassDecl.renameUsingConfig(enumName);
   }
 
   return _stack.pop().enumClass;
diff --git a/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart b/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart
index 192c038..90d5664 100644
--- a/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart
+++ b/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart
@@ -2,16 +2,14 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'dart:ffi';
-
 import 'package:ffigen/src/code_generator.dart';
+import 'package:ffigen/src/header_parser/includer.dart';
+import 'package:ffigen/src/header_parser/type_extractor/extractor.dart';
 import 'package:logging/logging.dart';
 
 import '../clang_bindings/clang_bindings.dart' as clang_types;
 import '../data.dart';
-import '../sub_parsers/enumdecl_parser.dart';
 import '../utils.dart';
-import 'compounddecl_parser.dart';
 
 final _logger = Logger('ffigen.header_parser.typedefdecl_parser');
 
@@ -32,88 +30,75 @@
 ///
 /// typedef A D; // Typeref.
 /// ```
-class _ParsedTypedef {
-  Binding? binding;
+class _ParsedTypealias {
+  Typealias? typealias;
   String? typedefName;
   bool typedefToPointer = false;
-  _ParsedTypedef();
+  _ParsedTypealias();
 }
 
-final _stack = Stack<_ParsedTypedef>();
+final _stack = Stack<_ParsedTypealias>();
 
 /// Parses a typedef declaration.
-Binding? parseTypedefDeclaration(clang_types.CXCursor cursor) {
-  _stack.push(_ParsedTypedef());
-
-  /// Check if typedef declaration is to a pointer.
-  _stack.top.typedefToPointer =
-      (clang.clang_getTypedefDeclUnderlyingType(cursor).kind ==
-          clang_types.CXTypeKind.CXType_Pointer);
-
-  // Name of typedef.
-  _stack.top.typedefName = cursor.spelling();
-  final resultCode = clang.clang_visitChildren(
-    cursor,
-    Pointer.fromFunction(_typedefdeclarationCursorVisitor,
-        clang_types.CXChildVisitResult.CXChildVisit_Break),
-    nullptr,
-  );
-
-  visitChildrenResultChecker(resultCode);
-  return _stack.pop().binding;
-}
-
-/// Visitor for extracting binding for a TypedefDeclarations of a
-/// [clang.CXCursorKind.CXCursor_TypedefDecl].
 ///
-/// Visitor invoked on cursor of type declaration returned by
-/// [clang.clang_getTypeDeclaration_wrap].
-int _typedefdeclarationCursorVisitor(clang_types.CXCursor cursor,
-    clang_types.CXCursor parent, Pointer<Void> clientData) {
-  try {
-    _logger.finest(
-        'typedefdeclarationCursorVisitor: ${cursor.completeStringRepr()}');
+/// Returns `null` if the typedef could not be generated or has been excluded
+/// by the config.
+Typealias? parseTypedefDeclaration(
+  clang_types.CXCursor cursor, {
+  bool pointerReference = false,
+}) {
+  _stack.push(_ParsedTypealias());
+  final typedefName = cursor.spelling();
+  final typedefUsr = cursor.usr();
+  if (shouldIncludeTypealias(typedefUsr, typedefName)) {
+    final ct = clang.clang_getTypedefDeclUnderlyingType(cursor);
+    final s = getCodeGenType(ct, pointerReference: pointerReference);
 
-    switch (clang.clang_getCursorKind(cursor)) {
-      case clang_types.CXCursorKind.CXCursor_StructDecl:
-        if (_stack.top.typedefToPointer &&
-            bindingsIndex.isSeenStruct(cursor.usr())) {
-          // Skip a typedef pointer if struct is seen.
-          _stack.top.binding = bindingsIndex.getSeenStruct(cursor.usr());
-        } else {
-          // This will update the name of struct if already seen.
-          _stack.top.binding = parseCompoundDeclaration(
-            cursor,
-            CompoundType.struct,
-            name: _stack.top.typedefName,
-          );
-        }
-        break;
-      case clang_types.CXCursorKind.CXCursor_UnionDecl:
-        if (_stack.top.typedefToPointer &&
-            bindingsIndex.isSeenUnion(cursor.usr())) {
-          // Skip a typedef pointer if struct is seen.
-          _stack.top.binding = bindingsIndex.getSeenUnion(cursor.usr());
-        } else {
-          // This will update the name of struct if already seen.
-          _stack.top.binding = parseCompoundDeclaration(
-            cursor,
-            CompoundType.union,
-            name: _stack.top.typedefName,
-          );
-        }
-        break;
-      case clang_types.CXCursorKind.CXCursor_EnumDecl:
-        _stack.top.binding =
-            parseEnumDeclaration(cursor, name: _stack.top.typedefName);
-        break;
-      default:
-        _logger.finest('typedefdeclarationCursorVisitor: Ignored');
+    if (bindingsIndex.isSeenUnsupportedTypealias(typedefUsr)) {
+      // Do not process unsupported typealiases again.
+    } else if (s.broadType == BroadType.Unimplemented) {
+      _logger
+          .fine("Skipped Typedef '$typedefName': Unimplemented type referred.");
+      bindingsIndex.addUnsupportedTypealiasToSeen(typedefUsr);
+    } else if (s.broadType == BroadType.Compound &&
+        s.compound!.originalName == typedefName) {
+      // Ignore typedef if it refers to a compound with the same original name.
+      bindingsIndex.addUnsupportedTypealiasToSeen(typedefUsr);
+      _logger.fine(
+          "Skipped Typedef '$typedefName': Name matches with referred struct/union.");
+    } else if (s.broadType == BroadType.Enum) {
+      // Ignore typedefs to Enum.
+      bindingsIndex.addUnsupportedTypealiasToSeen(typedefUsr);
+      _logger.fine("Skipped Typedef '$typedefName': typedef to enum.");
+    } else if (s.broadType == BroadType.Handle) {
+      // Ignore typedefs to Handle.
+      _logger.fine("Skipped Typedef '$typedefName': typedef to Dart Handle.");
+      bindingsIndex.addUnsupportedTypealiasToSeen(typedefUsr);
+    } else if (s.broadType == BroadType.ConstantArray ||
+        s.broadType == BroadType.IncompleteArray) {
+      // Ignore typedefs to Constant Array.
+      _logger.fine("Skipped Typedef '$typedefName': typedef to array.");
+      bindingsIndex.addUnsupportedTypealiasToSeen(typedefUsr);
+    } else if (s.broadType == BroadType.Boolean) {
+      // Ignore typedefs to Boolean.
+      _logger.fine("Skipped Typedef '$typedefName': typedef to bool.");
+      bindingsIndex.addUnsupportedTypealiasToSeen(typedefUsr);
+    } else {
+      // Create typealias.
+      _stack.top.typealias = Typealias(
+        usr: typedefUsr,
+        originalName: typedefName,
+        name: config.typedefs.renameUsingConfig(typedefName),
+        type: s,
+        dartDoc: getCursorDocComment(cursor),
+      );
+      bindingsIndex.addTypealiasToSeen(typedefUsr, _stack.top.typealias!);
     }
-  } catch (e, s) {
-    _logger.severe(e);
-    _logger.severe(s);
-    rethrow;
   }
-  return clang_types.CXChildVisitResult.CXChildVisit_Continue;
+
+  if (bindingsIndex.isSeenTypealias(typedefUsr)) {
+    _stack.top.typealias = bindingsIndex.getSeenTypealias(typedefUsr);
+  }
+
+  return _stack.pop().typealias;
 }
diff --git a/lib/src/header_parser/translation_unit_parser.dart b/lib/src/header_parser/translation_unit_parser.dart
index 5f59707..3e5a677 100644
--- a/lib/src/header_parser/translation_unit_parser.dart
+++ b/lib/src/header_parser/translation_unit_parser.dart
@@ -15,7 +15,6 @@
 import 'sub_parsers/compounddecl_parser.dart';
 import 'sub_parsers/enumdecl_parser.dart';
 import 'sub_parsers/functiondecl_parser.dart';
-import 'sub_parsers/typedefdecl_parser.dart';
 import 'utils.dart';
 
 final _logger = Logger('ffigen.header_parser.translation_unit_parser');
@@ -47,9 +46,6 @@
         case clang_types.CXCursorKind.CXCursor_FunctionDecl:
           addToBindings(parseFunctionDeclaration(cursor));
           break;
-        case clang_types.CXCursorKind.CXCursor_TypedefDecl:
-          addToBindings(parseTypedefDeclaration(cursor));
-          break;
         case clang_types.CXCursorKind.CXCursor_StructDecl:
           addToBindings(parseCompoundDeclaration(cursor, CompoundType.struct));
           break;
diff --git a/lib/src/header_parser/type_extractor/cxtypekindmap.dart b/lib/src/header_parser/type_extractor/cxtypekindmap.dart
index 48c915a..eae99bc 100644
--- a/lib/src/header_parser/type_extractor/cxtypekindmap.dart
+++ b/lib/src/header_parser/type_extractor/cxtypekindmap.dart
@@ -25,12 +25,8 @@
   clang.CXTypeKind.CXType_Double: SupportedNativeType.Double,
   clang.CXTypeKind.CXType_Char_S: SupportedNativeType.Int8,
   clang.CXTypeKind.CXType_Char_U: SupportedNativeType.Uint8,
-  clang.CXTypeKind.CXType_Enum: SupportedNativeType.Int32,
 };
 
-SupportedNativeType get enumNativeType =>
-    cxTypeKindToSupportedNativeTypes[clang.CXTypeKind.CXType_Enum]!;
-
 var suportedTypedefToSuportedNativeType = <String, SupportedNativeType>{
   'uint8_t': SupportedNativeType.Uint8,
   'uint16_t': SupportedNativeType.Uint16,
diff --git a/lib/src/header_parser/type_extractor/extractor.dart b/lib/src/header_parser/type_extractor/extractor.dart
index 521e71e..43d964c 100644
--- a/lib/src/header_parser/type_extractor/extractor.dart
+++ b/lib/src/header_parser/type_extractor/extractor.dart
@@ -4,13 +4,14 @@
 
 /// Extracts code_gen Type from type.
 import 'package:ffigen/src/code_generator.dart';
+import 'package:ffigen/src/header_parser/sub_parsers/typedefdecl_parser.dart';
 import 'package:ffigen/src/strings.dart' as strings;
 import 'package:logging/logging.dart';
 
 import '../clang_bindings/clang_bindings.dart' as clang_types;
 import '../data.dart';
 import '../sub_parsers/compounddecl_parser.dart';
-import '../translation_unit_parser.dart';
+import '../sub_parsers/enumdecl_parser.dart';
 import '../type_extractor/cxtypekindmap.dart';
 import '../utils.dart';
 
@@ -20,7 +21,6 @@
 /// Converts cxtype to a typestring code_generator can accept.
 Type getCodeGenType(
   clang_types.CXType cxtype, {
-  String? parentName,
 
   /// Passed on if a value was marked as a pointer before this one.
   bool pointerReference = false,
@@ -31,8 +31,7 @@
   switch (kind) {
     case clang_types.CXTypeKind.CXType_Pointer:
       final pt = clang.clang_getPointeeType(cxtype);
-      final s =
-          getCodeGenType(pt, parentName: parentName, pointerReference: true);
+      final s = getCodeGenType(pt, pointerReference: true);
 
       // Replace Pointer<_Dart_Handle> with Handle.
       if (config.useDartHandle &&
@@ -58,30 +57,54 @@
       }
 
       // This is important or we get stuck in infinite recursion.
-      final ct = clang.clang_getTypedefDeclUnderlyingType(
-          clang.clang_getTypeDeclaration(cxtype));
+      final cursor = clang.clang_getTypeDeclaration(cxtype);
+      final typedefUsr = cursor.usr();
 
-      final s = getCodeGenType(ct,
-          parentName: parentName ?? spelling,
-          pointerReference: pointerReference);
-      return s;
+      if (bindingsIndex.isSeenTypealias(typedefUsr)) {
+        return Type.typealias(bindingsIndex.getSeenTypealias(typedefUsr)!);
+      } else {
+        final typealias =
+            parseTypedefDeclaration(cursor, pointerReference: pointerReference);
+
+        if (typealias != null) {
+          return Type.typealias(typealias);
+        } else {
+          // Use underlying type if typealias couldn't be created or if
+          // the user excluded this typedef.
+          final ct = clang.clang_getTypedefDeclUnderlyingType(cursor);
+          return getCodeGenType(ct, pointerReference: pointerReference);
+        }
+      }
     case clang_types.CXTypeKind.CXType_Elaborated:
       final et = clang.clang_Type_getNamedType(cxtype);
-      final s = getCodeGenType(et,
-          parentName: parentName, pointerReference: pointerReference);
+      final s = getCodeGenType(et, pointerReference: pointerReference);
       return s;
     case clang_types.CXTypeKind.CXType_Record:
-      return _extractfromRecord(cxtype, parentName, pointerReference);
+      return _extractfromRecord(cxtype, pointerReference);
     case clang_types.CXTypeKind.CXType_Enum:
-      return Type.nativeType(
-        enumNativeType,
-      );
+      final cursor = clang.clang_getTypeDeclaration(cxtype);
+      final usr = cursor.usr();
+
+      if (bindingsIndex.isSeenEnumClass(usr)) {
+        return Type.enumClass(bindingsIndex.getSeenEnumClass(usr)!);
+      } else {
+        final enumClass = parseEnumDeclaration(
+          cursor,
+          ignoreFilter: true,
+        );
+        if (enumClass == null) {
+          // Handle anonymous enum declarations within another declaration.
+          return Type.nativeType(Type.enumNativeType);
+        } else {
+          return Type.enumClass(enumClass);
+        }
+      }
     case clang_types.CXTypeKind.CXType_FunctionProto:
       // Primarily used for function pointers.
-      return _extractFromFunctionProto(cxtype, parentName);
+      return _extractFromFunctionProto(cxtype);
     case clang_types.CXTypeKind.CXType_FunctionNoProto:
       // Primarily used for function types with zero arguments.
-      return _extractFromFunctionProto(cxtype, parentName);
+      return _extractFromFunctionProto(cxtype);
     case clang_types.CXTypeKind
         .CXType_ConstantArray: // Primarily used for constant array in struct members.
       return Type.constantArray(
@@ -109,8 +132,7 @@
   }
 }
 
-Type _extractfromRecord(
-    clang_types.CXType cxtype, String? parentName, bool pointerReference) {
+Type _extractfromRecord(clang_types.CXType cxtype, bool pointerReference) {
   Type type;
 
   final cursor = clang.clang_getTypeDeclaration(cxtype);
@@ -121,9 +143,6 @@
       cursorKind == clang_types.CXCursorKind.CXCursor_UnionDecl) {
     final declUsr = cursor.usr();
 
-    // Name of typedef (parentName) is used if available.
-    final declName = parentName ?? cursor.spelling();
-
     // Set includer functions according to compoundType.
     final bool Function(String) isSeenDecl;
     final Compound? Function(String) getSeenDecl;
@@ -153,25 +172,17 @@
       parseCompoundDeclaration(
         cursor,
         compoundType,
-        name: declName,
         ignoreFilter: true,
         pointerReference: pointerReference,
-        updateName: false,
       );
     } else {
       final struc = parseCompoundDeclaration(
         cursor,
         compoundType,
-        name: declName,
         ignoreFilter: true,
         pointerReference: pointerReference,
       );
       type = Type.compound(struc!);
-
-      // Add to bindings if it's not Dart_Handle and is unseen.
-      if (!(config.useDartHandle && declUsr == strings.dartHandleUsr)) {
-        addToBindings(struc);
-      }
     }
   } else {
     _logger.fine(
@@ -183,12 +194,7 @@
 }
 
 // Used for function pointer arguments.
-Type _extractFromFunctionProto(clang_types.CXType cxtype, String? parentName) {
-  var name = parentName;
-
-  // An empty name means the function prototype was declared in-place, instead
-  // of using a typedef.
-  name = name ?? '';
+Type _extractFromFunctionProto(clang_types.CXType cxtype) {
   final _parameters = <Parameter>[];
   final totalArgs = clang.clang_getNumArgTypes(cxtype);
   for (var i = 0; i < totalArgs; i++) {
@@ -207,21 +213,8 @@
     );
   }
 
-  Typedef? typedefC;
-  if (bindingsIndex.isSeenFunctionTypedef(name)) {
-    typedefC = bindingsIndex.getSeenFunctionTypedef(name);
-  } else {
-    typedefC = Typedef(
-      name: name.isNotEmpty ? name : incrementalNamer.name('_typedefC'),
-      typedefType: TypedefType.C,
-      parameters: _parameters,
-      returnType: clang.clang_getResultType(cxtype).toCodeGenType(),
-    );
-    // Add to seen, if name isn't empty.
-    if (name.isNotEmpty) {
-      bindingsIndex.addFunctionTypedefToSeen(name, typedefC);
-    }
-  }
-
-  return Type.nativeFunc(typedefC!);
+  return Type.nativeFunc(NativeFunc.fromFunctionType(FunctionType(
+    parameters: _parameters,
+    returnType: clang.clang_getResultType(cxtype).toCodeGenType(),
+  )));
 }
diff --git a/lib/src/header_parser/utils.dart b/lib/src/header_parser/utils.dart
index 272f21d..9ff09fe 100644
--- a/lib/src/header_parser/utils.dart
+++ b/lib/src/header_parser/utils.dart
@@ -333,8 +333,13 @@
   final Map<String, Constant> _unnamedEnumConstants = {};
   final Map<String, String> _macros = {};
   final Map<String, Global> _globals = {};
-  // Stores only named typedefC used in NativeFunc.
-  final Map<String, Typedef> _functionTypedefs = {};
+
+  /// Contains usr for typedefs which cannot be generated.
+  final Set<String> _unsupportedTypealiases = {};
+  final Map<String, Typealias> _typealiases = {};
+
+  /// Index for headers.
+  final Map<String, bool> _headerCache = {};
 
   bool isSeenStruct(String usr) {
     return _structs.containsKey(usr);
@@ -420,15 +425,35 @@
     return _macros[usr];
   }
 
-  bool isSeenFunctionTypedef(String originalName) {
-    return _functionTypedefs.containsKey(originalName);
+  bool isSeenTypealias(String usr) {
+    return _typealiases.containsKey(usr);
   }
 
-  void addFunctionTypedefToSeen(String originalName, Typedef t) {
-    _functionTypedefs[originalName] = t;
+  void addTypealiasToSeen(String usr, Typealias t) {
+    _typealiases[usr] = t;
   }
 
-  Typedef? getSeenFunctionTypedef(String originalName) {
-    return _functionTypedefs[originalName];
+  bool isSeenUnsupportedTypealias(String usr) {
+    return _unsupportedTypealiases.contains(usr);
+  }
+
+  void addUnsupportedTypealiasToSeen(String usr) {
+    _unsupportedTypealiases.add(usr);
+  }
+
+  Typealias? getSeenTypealias(String usr) {
+    return _typealiases[usr];
+  }
+
+  bool isSeenHeader(String source) {
+    return _headerCache.containsKey(source);
+  }
+
+  void addHeaderToSeen(String source, bool includeStatus) {
+    _headerCache[source] = includeStatus;
+  }
+
+  bool? getSeenHeaderStatus(String source) {
+    return _headerCache[source];
   }
 }
diff --git a/lib/src/strings.dart b/lib/src/strings.dart
index b551ead..46bdb09 100644
--- a/lib/src/strings.dart
+++ b/lib/src/strings.dart
@@ -51,6 +51,7 @@
 const unnamedEnums = 'unnamed-enums';
 const globals = 'globals';
 const macros = 'macros';
+const typedefs = 'typedefs';
 
 // Sub-fields of Declarations.
 const include = 'include';
@@ -155,7 +156,8 @@
   '/usr/lib/llvm-9/lib/',
   '/usr/lib/llvm-10/lib/',
   '/usr/lib/llvm-11/lib/',
-  '/usr/lib/'
+  '/usr/lib/',
+  '/usr/lib64/',
 ];
 const windowsDylibLocations = [
   r'C:\Program Files\LLVM\bin\',
diff --git a/pubspec.yaml b/pubspec.yaml
index ef3ff76..9c305e2 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 name: ffigen
-version: 3.1.0-dev.1
+version: 4.0.0-dev.0
 homepage: https://github.com/dart-lang/ffigen
 description: Generator for FFI bindings, using LibClang to parse C header files.
 
diff --git a/test/code_generator_tests/code_generator_test.dart b/test/code_generator_tests/code_generator_test.dart
index 79ac352..b30f634 100644
--- a/test/code_generator_tests/code_generator_test.dart
+++ b/test/code_generator_tests/code_generator_test.dart
@@ -447,6 +447,40 @@
     );
     _matchLib(library, 'unions');
   });
+  test('Typealias Bindings', () {
+    final library = Library(
+      name: 'Bindings',
+      bindings: [
+        Typealias(
+            name: 'RawUnused', type: Type.compound(Struc(name: 'Struct1'))),
+        Struc(name: 'WithTypealiasStruc', members: [
+          Member(
+              name: 't',
+              type: Type.typealias(Typealias(
+                  name: 'Struct2Typealias',
+                  type: Type.struct(Struc(name: 'Struct2', members: [
+                    Member(
+                        name: 'a',
+                        type: Type.nativeType(SupportedNativeType.Double))
+                  ])))))
+        ]),
+        Func(
+            name: 'WithTypealiasStruc',
+            returnType: Type.pointer(Type.nativeFunc(
+                NativeFunc.fromFunctionType(FunctionType(
+                    returnType: Type.nativeType(SupportedNativeType.Void),
+                    parameters: [])))),
+            parameters: [
+              Parameter(
+                  name: 't',
+                  type: Type.typealias(Typealias(
+                      name: 'Struct3Typealias',
+                      type: Type.struct(Struc(name: 'Struct3')))))
+            ]),
+      ],
+    );
+    _matchLib(library, 'typealias');
+  });
 }
 
 /// Utility to match expected bindings to the generated bindings.
diff --git a/test/code_generator_tests/expected_bindings/_expected_boolean_dartbool_bindings.dart b/test/code_generator_tests/expected_bindings/_expected_boolean_dartbool_bindings.dart
index 7764524..a35b620 100644
--- a/test/code_generator_tests/expected_bindings/_expected_boolean_dartbool_bindings.dart
+++ b/test/code_generator_tests/expected_bindings/_expected_boolean_dartbool_bindings.dart
@@ -28,21 +28,14 @@
         0;
   }
 
-  late final _test1_ptr = _lookup<ffi.NativeFunction<_c_test1>>('test1');
-  late final _dart_test1 _test1 = _test1_ptr.asFunction<_dart_test1>();
+  late final _test1_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Uint8, ffi.Pointer<ffi.Uint8>)>>('test1');
+  late final _test1 =
+      _test1_ptr.asFunction<int Function(int, ffi.Pointer<ffi.Uint8>)>();
 }
 
 class test2 extends ffi.Struct {
   @ffi.Uint8()
   external int a;
 }
-
-typedef _c_test1 = ffi.Uint8 Function(
-  ffi.Uint8 a,
-  ffi.Pointer<ffi.Uint8> b,
-);
-
-typedef _dart_test1 = int Function(
-  int a,
-  ffi.Pointer<ffi.Uint8> b,
-);
diff --git a/test/code_generator_tests/expected_bindings/_expected_boolean_no_dartbool_bindings.dart b/test/code_generator_tests/expected_bindings/_expected_boolean_no_dartbool_bindings.dart
index 5757ff0..30653c8 100644
--- a/test/code_generator_tests/expected_bindings/_expected_boolean_no_dartbool_bindings.dart
+++ b/test/code_generator_tests/expected_bindings/_expected_boolean_no_dartbool_bindings.dart
@@ -27,21 +27,14 @@
     );
   }
 
-  late final _test1_ptr = _lookup<ffi.NativeFunction<_c_test1>>('test1');
-  late final _dart_test1 _test1 = _test1_ptr.asFunction<_dart_test1>();
+  late final _test1_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint8 Function(ffi.Uint8, ffi.Pointer<ffi.Uint8>)>>('test1');
+  late final _test1 =
+      _test1_ptr.asFunction<int Function(int, ffi.Pointer<ffi.Uint8>)>();
 }
 
 class test2 extends ffi.Struct {
   @ffi.Uint8()
   external int a;
 }
-
-typedef _c_test1 = ffi.Uint8 Function(
-  ffi.Uint8 a,
-  ffi.Pointer<ffi.Uint8> b,
-);
-
-typedef _dart_test1 = int Function(
-  int a,
-  ffi.Pointer<ffi.Uint8> b,
-);
diff --git a/test/code_generator_tests/expected_bindings/_expected_function_bindings.dart b/test/code_generator_tests/expected_bindings/_expected_function_bindings.dart
index 30de175..8b94f2b 100644
--- a/test/code_generator_tests/expected_bindings/_expected_function_bindings.dart
+++ b/test/code_generator_tests/expected_bindings/_expected_function_bindings.dart
@@ -23,8 +23,9 @@
     return _noParam();
   }
 
-  late final _noParam_ptr = _lookup<ffi.NativeFunction<_c_noParam>>('noParam');
-  late final _dart_noParam _noParam = _noParam_ptr.asFunction<_dart_noParam>();
+  late final _noParam_ptr =
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>('noParam');
+  late final _noParam = _noParam_ptr.asFunction<int Function()>();
 
   int withPrimitiveParam(
     int a,
@@ -37,9 +38,10 @@
   }
 
   late final _withPrimitiveParam_ptr =
-      _lookup<ffi.NativeFunction<_c_withPrimitiveParam>>('withPrimitiveParam');
-  late final _dart_withPrimitiveParam _withPrimitiveParam =
-      _withPrimitiveParam_ptr.asFunction<_dart_withPrimitiveParam>();
+      _lookup<ffi.NativeFunction<ffi.Uint8 Function(ffi.Int32, ffi.Uint8)>>(
+          'withPrimitiveParam');
+  late final _withPrimitiveParam =
+      _withPrimitiveParam_ptr.asFunction<int Function(int, int)>();
 
   ffi.Pointer<ffi.Double> withPointerParam(
     ffi.Pointer<ffi.Int32> a,
@@ -51,32 +53,11 @@
     );
   }
 
-  late final _withPointerParam_ptr =
-      _lookup<ffi.NativeFunction<_c_withPointerParam>>('withPointerParam');
-  late final _dart_withPointerParam _withPointerParam =
-      _withPointerParam_ptr.asFunction<_dart_withPointerParam>();
+  late final _withPointerParam_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Double> Function(ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Pointer<ffi.Uint8>>)>>('withPointerParam');
+  late final _withPointerParam = _withPointerParam_ptr.asFunction<
+      ffi.Pointer<ffi.Double> Function(
+          ffi.Pointer<ffi.Int32>, ffi.Pointer<ffi.Pointer<ffi.Uint8>>)>();
 }
-
-typedef _c_noParam = ffi.Int32 Function();
-
-typedef _dart_noParam = int Function();
-
-typedef _c_withPrimitiveParam = ffi.Uint8 Function(
-  ffi.Int32 a,
-  ffi.Uint8 b,
-);
-
-typedef _dart_withPrimitiveParam = int Function(
-  int a,
-  int b,
-);
-
-typedef _c_withPointerParam = ffi.Pointer<ffi.Double> Function(
-  ffi.Pointer<ffi.Int32> a,
-  ffi.Pointer<ffi.Pointer<ffi.Uint8>> b,
-);
-
-typedef _dart_withPointerParam = ffi.Pointer<ffi.Double> Function(
-  ffi.Pointer<ffi.Int32> a,
-  ffi.Pointer<ffi.Pointer<ffi.Uint8>> b,
-);
diff --git a/test/code_generator_tests/expected_bindings/_expected_function_n_struct_bindings.dart b/test/code_generator_tests/expected_bindings/_expected_function_n_struct_bindings.dart
index c4bfa27..d658e31 100644
--- a/test/code_generator_tests/expected_bindings/_expected_function_n_struct_bindings.dart
+++ b/test/code_generator_tests/expected_bindings/_expected_function_n_struct_bindings.dart
@@ -25,10 +25,12 @@
     );
   }
 
-  late final _someFunc_ptr =
-      _lookup<ffi.NativeFunction<_c_someFunc>>('someFunc');
-  late final _dart_someFunc _someFunc =
-      _someFunc_ptr.asFunction<_dart_someFunc>();
+  late final _someFunc_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<SomeStruc> Function(
+              ffi.Pointer<ffi.Pointer<SomeStruc>>)>>('someFunc');
+  late final _someFunc = _someFunc_ptr.asFunction<
+      ffi.Pointer<SomeStruc> Function(ffi.Pointer<ffi.Pointer<SomeStruc>>)>();
 }
 
 class SomeStruc extends ffi.Struct {
@@ -41,11 +43,3 @@
   @ffi.Uint8()
   external int c;
 }
-
-typedef _c_someFunc = ffi.Pointer<SomeStruc> Function(
-  ffi.Pointer<ffi.Pointer<SomeStruc>> some,
-);
-
-typedef _dart_someFunc = ffi.Pointer<SomeStruc> Function(
-  ffi.Pointer<ffi.Pointer<SomeStruc>> some,
-);
diff --git a/test/code_generator_tests/expected_bindings/_expected_internal_conflict_resolution_bindings.dart b/test/code_generator_tests/expected_bindings/_expected_internal_conflict_resolution_bindings.dart
index 4556dfa..7a0cff2 100644
--- a/test/code_generator_tests/expected_bindings/_expected_internal_conflict_resolution_bindings.dart
+++ b/test/code_generator_tests/expected_bindings/_expected_internal_conflict_resolution_bindings.dart
@@ -24,38 +24,41 @@
     return _test_1();
   }
 
-  late final _test_ptr = _lookup<ffi.NativeFunction<_c_test1>>('test');
-  late final _dart_test1 _test_1 = _test_ptr.asFunction<_dart_test1>();
+  late final _test_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('test');
+  late final _test_1 = _test_ptr.asFunction<void Function()>();
 
   void _test() {
     return __test();
   }
 
-  late final __test_ptr = _lookup<ffi.NativeFunction<_c__test>>('_test');
-  late final _dart__test __test = __test_ptr.asFunction<_dart__test>();
+  late final __test_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('_test');
+  late final __test = __test_ptr.asFunction<void Function()>();
 
   void _c_test() {
     return __c_test();
   }
 
-  late final __c_test_ptr = _lookup<ffi.NativeFunction<_c__c_test>>('_c_test');
-  late final _dart__c_test __c_test = __c_test_ptr.asFunction<_dart__c_test>();
+  late final __c_test_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('_c_test');
+  late final __c_test = __c_test_ptr.asFunction<void Function()>();
 
   void _dart_test() {
     return __dart_test();
   }
 
   late final __dart_test_ptr =
-      _lookup<ffi.NativeFunction<_c__dart_test>>('_dart_test');
-  late final _dart__dart_test __dart_test =
-      __dart_test_ptr.asFunction<_dart__dart_test>();
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('_dart_test');
+  late final __dart_test = __dart_test_ptr.asFunction<void Function()>();
 
   void Test() {
     return _Test();
   }
 
-  late final _Test_ptr = _lookup<ffi.NativeFunction<_c_Test1>>('Test');
-  late final _dart_Test _Test = _Test_ptr.asFunction<_dart_Test>();
+  late final _Test_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('Test');
+  late final _Test = _Test_ptr.asFunction<void Function()>();
 }
 
 class _Test extends ffi.Struct {
@@ -68,23 +71,3 @@
 abstract class _c_Test {}
 
 abstract class init_dylib {}
-
-typedef _c_test1 = ffi.Void Function();
-
-typedef _dart_test1 = void Function();
-
-typedef _c__test = ffi.Void Function();
-
-typedef _dart__test = void Function();
-
-typedef _c__c_test = ffi.Void Function();
-
-typedef _dart__c_test = void Function();
-
-typedef _c__dart_test = ffi.Void Function();
-
-typedef _dart__dart_test = void Function();
-
-typedef _c_Test1 = ffi.Void Function();
-
-typedef _dart_Test = void Function();
diff --git a/test/code_generator_tests/expected_bindings/_expected_sort_bindings_bindings.dart b/test/code_generator_tests/expected_bindings/_expected_sort_bindings_bindings.dart
index aaa8f2d..fd1b0be 100644
--- a/test/code_generator_tests/expected_bindings/_expected_sort_bindings_bindings.dart
+++ b/test/code_generator_tests/expected_bindings/_expected_sort_bindings_bindings.dart
@@ -21,25 +21,17 @@
     return _a();
   }
 
-  late final _a_ptr = _lookup<ffi.NativeFunction<_c_a>>('a');
-  late final _dart_a _a = _a_ptr.asFunction<_dart_a>();
+  late final _a_ptr = _lookup<ffi.NativeFunction<ffi.Void Function()>>('a');
+  late final _a = _a_ptr.asFunction<void Function()>();
 
   void b() {
     return _b();
   }
 
-  late final _b_ptr = _lookup<ffi.NativeFunction<_c_b>>('b');
-  late final _dart_b _b = _b_ptr.asFunction<_dart_b>();
+  late final _b_ptr = _lookup<ffi.NativeFunction<ffi.Void Function()>>('b');
+  late final _b = _b_ptr.asFunction<void Function()>();
 }
 
 class c extends ffi.Opaque {}
 
 class d extends ffi.Opaque {}
-
-typedef _c_a = ffi.Void Function();
-
-typedef _dart_a = void Function();
-
-typedef _c_b = ffi.Void Function();
-
-typedef _dart_b = void Function();
diff --git a/test/code_generator_tests/expected_bindings/_expected_typealias_bindings.dart b/test/code_generator_tests/expected_bindings/_expected_typealias_bindings.dart
new file mode 100644
index 0000000..4b63376
--- /dev/null
+++ b/test/code_generator_tests/expected_bindings/_expected_typealias_bindings.dart
@@ -0,0 +1,54 @@
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+import 'dart:ffi' as ffi;
+
+class Bindings {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  Bindings(ffi.DynamicLibrary dynamicLibrary) : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  Bindings.fromLookup(
+      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+          lookup)
+      : _lookup = lookup;
+
+  ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> WithTypealiasStruc_1(
+    Struct3Typealias t,
+  ) {
+    return _WithTypealiasStruc_1(
+      t,
+    );
+  }
+
+  late final _WithTypealiasStruc_1_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> Function(
+              Struct3Typealias)>>('WithTypealiasStruc');
+  late final _WithTypealiasStruc_1 = _WithTypealiasStruc_1_ptr.asFunction<
+      ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> Function(
+          Struct3Typealias)>();
+}
+
+typedef RawUnused = Struct1;
+
+class Struct1 extends ffi.Opaque {}
+
+class WithTypealiasStruc extends ffi.Struct {
+  external Struct2Typealias t;
+}
+
+typedef Struct2Typealias = Struct2;
+
+class Struct2 extends ffi.Struct {
+  @ffi.Double()
+  external double a;
+}
+
+typedef Struct3Typealias = Struct3;
+
+class Struct3 extends ffi.Opaque {}
diff --git a/test/collision_tests/decl_decl_collision_test.dart b/test/collision_tests/decl_decl_collision_test.dart
index fb6645f..ac22f40 100644
--- a/test/collision_tests/decl_decl_collision_test.dart
+++ b/test/collision_tests/decl_decl_collision_test.dart
@@ -36,6 +36,10 @@
           rawType: 'int',
           rawValue: '0',
         ),
+        Typealias(
+            name: 'testAlias', type: Type.nativeType(SupportedNativeType.Void)),
+        Typealias(
+            name: 'testAlias', type: Type.nativeType(SupportedNativeType.Void)),
 
         /// Conflicts across declarations.
         Struc(name: 'testCrossDecl'),
@@ -44,6 +48,9 @@
             returnType: Type.nativeType(SupportedNativeType.Void)),
         Constant(name: 'testCrossDecl', rawValue: '0', rawType: 'int'),
         EnumClass(name: 'testCrossDecl'),
+        Typealias(
+            name: 'testCrossDecl',
+            type: Type.nativeType(SupportedNativeType.Void)),
 
         /// Conflicts with ffi library prefix, name of prefix is changed.
         Struc(name: 'ffi'),
@@ -76,6 +83,11 @@
           rawType: 'int',
           rawValue: '0',
         ),
+        Typealias(
+            name: 'testAlias', type: Type.nativeType(SupportedNativeType.Void)),
+        Typealias(
+            name: 'testAlias_1',
+            type: Type.nativeType(SupportedNativeType.Void)),
         Struc(name: 'testCrossDecl', originalName: 'testCrossDecl'),
         Func(
             name: 'testCrossDecl_1',
@@ -83,6 +95,9 @@
             returnType: Type.nativeType(SupportedNativeType.Void)),
         Constant(name: 'testCrossDecl_2', rawValue: '0', rawType: 'int'),
         EnumClass(name: 'testCrossDecl_3'),
+        Typealias(
+            name: 'testCrossDecl_4',
+            type: Type.nativeType(SupportedNativeType.Void)),
         Struc(name: 'ffi'),
         Func(
             name: 'ffi_1',
diff --git a/test/collision_tests/decl_symbol_address_collision_test.dart b/test/collision_tests/decl_symbol_address_collision_test.dart
index cc534e8..b11252f 100644
--- a/test/collision_tests/decl_symbol_address_collision_test.dart
+++ b/test/collision_tests/decl_symbol_address_collision_test.dart
@@ -36,7 +36,7 @@
       matchLibraryWithExpected(actual, [
         'test',
         'debug_generated',
-        'decl_symbol_address_collision_output.dart'
+        'collision_test_decl_symbol_address_collision_output.dart'
       ], [
         'test',
         'collision_tests',
diff --git a/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart b/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart
index b983034..a8d8a7b 100644
--- a/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart
+++ b/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart
@@ -25,8 +25,7 @@
 
   late final __library_ptr =
       _lookup<ffi.NativeFunction<Native__library>>('_library');
-  late final _dart__library __library =
-      __library_ptr.asFunction<_dart__library>();
+  late final __library = __library_ptr.asFunction<void Function()>();
 
   void _SymbolAddresses_1() {
     return __SymbolAddresses_1();
@@ -35,8 +34,8 @@
   late final __SymbolAddresses_1_ptr =
       _lookup<ffi.NativeFunction<Native__SymbolAddresses_1>>(
           '_SymbolAddresses_1');
-  late final _dart__SymbolAddresses_1 __SymbolAddresses_1 =
-      __SymbolAddresses_1_ptr.asFunction<_dart__SymbolAddresses_1>();
+  late final __SymbolAddresses_1 =
+      __SymbolAddresses_1_ptr.asFunction<void Function()>();
 
   late final addresses = _SymbolAddresses_2(this);
 }
@@ -57,9 +56,4 @@
 abstract class Bindings {}
 
 typedef Native__library = ffi.Void Function();
-
-typedef _dart__library = void Function();
-
 typedef Native__SymbolAddresses_1 = ffi.Void Function();
-
-typedef _dart__SymbolAddresses_1 = void Function();
diff --git a/test/collision_tests/reserved_keyword_collision_test.dart b/test/collision_tests/reserved_keyword_collision_test.dart
index b5b6931..7764ee1 100644
--- a/test/collision_tests/reserved_keyword_collision_test.dart
+++ b/test/collision_tests/reserved_keyword_collision_test.dart
@@ -45,6 +45,7 @@
           rawType: 'int',
           rawValue: '0',
         ),
+        Typealias(name: 'var', type: Type.nativeType(SupportedNativeType.Void)),
       ]);
       final l2 = Library(name: 'Bindings', bindings: [
         Struc(name: 'abstract_1'),
@@ -79,6 +80,8 @@
           rawType: 'int',
           rawValue: '0',
         ),
+        Typealias(
+            name: 'var_1', type: Type.nativeType(SupportedNativeType.Void)),
       ]);
       expect(l1.generate(), l2.generate());
     });
diff --git a/test/example_tests/cjson_example_test.dart b/test/example_tests/cjson_example_test.dart
index f6504a8..7d09433 100644
--- a/test/example_tests/cjson_example_test.dart
+++ b/test/example_tests/cjson_example_test.dart
@@ -27,6 +27,8 @@
   ${strings.includeDirectives}:
     - '**cJSON.h'
 ${strings.comments}: false
+${strings.typedefmap}:
+  'size_t': 'IntPtr'
 ${strings.preamble}: |
   // Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
   //
@@ -52,7 +54,7 @@
 
       matchLibraryWithExpected(
         library,
-        ['test', 'debug_generated', 'c_json.dart'],
+        ['test', 'debug_generated', 'example_c_json.dart'],
         ['example', 'c_json', config.output],
       );
     });
diff --git a/test/example_tests/libclang_example_test.dart b/test/example_tests/libclang_example_test.dart
index 43407fc..1c3b2b7 100644
--- a/test/example_tests/libclang_example_test.dart
+++ b/test/example_tests/libclang_example_test.dart
@@ -40,7 +40,9 @@
   ${strings.include}:
     - 'CXTypeKind'
     - 'CXGlobalOptFlags'
-
+${strings.typedefmap}:
+    'size_t': 'IntPtr'
+    'time_t': 'Int64'
 ${strings.name}: 'LibClang'
 ${strings.description}: 'Holds bindings to LibClang.'
 ${strings.comments}:
@@ -57,7 +59,7 @@
 
       matchLibraryWithExpected(
         library,
-        ['test', 'debug_generated', 'libclang-example.dart'],
+        ['test', 'debug_generated', 'example_libclang.dart'],
         ['example', 'libclang-example', config.output],
       );
     });
diff --git a/test/example_tests/simple_example_test.dart b/test/example_tests/simple_example_test.dart
index 8f4c181..190e65e 100644
--- a/test/example_tests/simple_example_test.dart
+++ b/test/example_tests/simple_example_test.dart
@@ -30,7 +30,7 @@
 
       matchLibraryWithExpected(
         library,
-        ['test', 'debug_generated', 'simple.dart'],
+        ['test', 'debug_generated', 'example_simple.dart'],
         ['example', 'simple', config.output],
       );
     });
diff --git a/test/header_parser_tests/comment_markup_test.dart b/test/header_parser_tests/comment_markup_test.dart
index 9771f63..3fadaea 100644
--- a/test/header_parser_tests/comment_markup_test.dart
+++ b/test/header_parser_tests/comment_markup_test.dart
@@ -36,7 +36,7 @@
       matchLibraryWithExpected(actual, [
         'test',
         'debug_generated',
-        'comment_markup_test_output.dart'
+        'header_parser_comment_markup_test_output.dart'
       ], [
         'test',
         'header_parser_tests',
diff --git a/test/header_parser_tests/dart_handle_test.dart b/test/header_parser_tests/dart_handle_test.dart
index ed9d1aa..9089302 100644
--- a/test/header_parser_tests/dart_handle_test.dart
+++ b/test/header_parser_tests/dart_handle_test.dart
@@ -19,7 +19,6 @@
   group('dart_handle_test', () {
     setUpAll(() {
       logWarnings();
-      expected = expectedLibrary();
       actual = parser.parse(
         Config.fromYaml(yaml.loadYaml('''
 ${strings.name}: 'NativeLibrary'
@@ -35,86 +34,17 @@
         ''') as yaml.YamlMap),
       );
     });
-    test('Total bindings count', () {
-      expect(actual.bindings.length, expected.bindings.length);
-    });
-
-    test('func1', () {
-      expect(actual.getBindingAsString('func1'),
-          expected.getBindingAsString('func1'));
-    });
-    test('func2', () {
-      expect(actual.getBindingAsString('func2'),
-          expected.getBindingAsString('func2'));
-    });
-    test('func3', () {
-      expect(actual.getBindingAsString('func3'),
-          expected.getBindingAsString('func3'));
-    });
-    test('func4', () {
-      expect(actual.getBindingAsString('func4'),
-          expected.getBindingAsString('func4'));
-    });
-    test('struc1', () {
-      expect(actual.getBindingAsString('struc1'),
-          expected.getBindingAsString('struc1'));
-    });
-    test('struc2', () {
-      expect(actual.getBindingAsString('struc2'),
-          expected.getBindingAsString('struc2'));
+    test('Expected Bindings', () {
+      matchLibraryWithExpected(actual, [
+        'test',
+        'debug_generated',
+        'header_parser_dart_handle_test_output.dart'
+      ], [
+        'test',
+        'header_parser_tests',
+        'expected_bindings',
+        '_expected_dart_handle_bindings.dart'
+      ]);
     });
   });
 }
-
-Library expectedLibrary() {
-  final namedTypedef = Typedef(
-    name: 'typedef1',
-    typedefType: TypedefType.C,
-    returnType: Type.nativeType(SupportedNativeType.Void),
-    parameters: [Parameter(type: Type.handle())],
-  );
-  return Library(
-    name: 'NativeLibrary',
-    bindings: [
-      Func(
-        name: 'func1',
-        returnType: Type.nativeType(
-          SupportedNativeType.Void,
-        ),
-        parameters: [
-          Parameter(type: Type.handle()),
-        ],
-      ),
-      Func(
-        name: 'func2',
-        returnType: Type.handle(),
-      ),
-      Func(
-        name: 'func3',
-        returnType: Type.pointer(Type.pointer(Type.handle())),
-        parameters: [
-          Parameter(
-            type: Type.pointer(Type.handle()),
-          ),
-        ],
-      ),
-      Func(
-        name: 'func4',
-        returnType: Type.nativeType(SupportedNativeType.Void),
-        parameters: [
-          Parameter(
-            type: Type.pointer(Type.nativeFunc(namedTypedef)),
-          ),
-        ],
-      ),
-      // struc1 should have no members.
-      Struc(name: 'struc1'),
-      Struc(
-        name: 'struc2',
-        members: [
-          Member(name: 'h', type: Type.pointer(Type.handle())),
-        ],
-      ),
-    ],
-  );
-}
diff --git a/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart
index 75bc7c7..378bec0 100644
--- a/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart
+++ b/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart
@@ -24,8 +24,9 @@
     return _com1();
   }
 
-  late final _com1_ptr = _lookup<ffi.NativeFunction<_c_com1>>('com1');
-  late final _dart_com1 _com1 = _com1_ptr.asFunction<_dart_com1>();
+  late final _com1_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('com1');
+  late final _com1 = _com1_ptr.asFunction<void Function()>();
 
   /// This is a multi-line
   /// test comment.
@@ -33,8 +34,9 @@
     return _com2();
   }
 
-  late final _com2_ptr = _lookup<ffi.NativeFunction<_c_com2>>('com2');
-  late final _dart_com2 _com2 = _com2_ptr.asFunction<_dart_com2>();
+  late final _com2_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('com2');
+  late final _com2 = _com2_ptr.asFunction<void Function()>();
 
   /// This is a multi-line
   /// doxygen style
@@ -43,8 +45,9 @@
     return _com3();
   }
 
-  late final _com3_ptr = _lookup<ffi.NativeFunction<_c_com3>>('com3');
-  late final _dart_com3 _com3 = _com3_ptr.asFunction<_dart_com3>();
+  late final _com3_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('com3');
+  late final _com3 = _com3_ptr.asFunction<void Function()>();
 }
 
 /// Test comment for struct.
@@ -58,15 +61,3 @@
   @ffi.Float()
   external double b;
 }
-
-typedef _c_com1 = ffi.Void Function();
-
-typedef _dart_com1 = void Function();
-
-typedef _c_com2 = ffi.Void Function();
-
-typedef _dart_com2 = void Function();
-
-typedef _c_com3 = ffi.Void Function();
-
-typedef _dart_com3 = void Function();
diff --git a/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart
new file mode 100644
index 0000000..7d87f98
--- /dev/null
+++ b/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart
@@ -0,0 +1,77 @@
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+import 'dart:ffi' as ffi;
+
+/// Dart_Handle Test
+class NativeLibrary {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  NativeLibrary(ffi.DynamicLibrary dynamicLibrary)
+      : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  NativeLibrary.fromLookup(
+      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+          lookup)
+      : _lookup = lookup;
+
+  void func1(
+    Object arg0,
+  ) {
+    return _func1(
+      arg0,
+    );
+  }
+
+  late final _func1_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Handle)>>('func1');
+  late final _func1 = _func1_ptr.asFunction<void Function(Object)>();
+
+  Object func2() {
+    return _func2();
+  }
+
+  late final _func2_ptr =
+      _lookup<ffi.NativeFunction<ffi.Handle Function()>>('func2');
+  late final _func2 = _func2_ptr.asFunction<Object Function()>();
+
+  ffi.Pointer<ffi.Pointer<ffi.Handle>> func3(
+    ffi.Pointer<ffi.Handle> arg0,
+  ) {
+    return _func3(
+      arg0,
+    );
+  }
+
+  late final _func3_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Pointer<ffi.Handle>> Function(
+              ffi.Pointer<ffi.Handle>)>>('func3');
+  late final _func3 = _func3_ptr.asFunction<
+      ffi.Pointer<ffi.Pointer<ffi.Handle>> Function(ffi.Pointer<ffi.Handle>)>();
+
+  void func4(
+    typedef1 arg0,
+  ) {
+    return _func4(
+      arg0,
+    );
+  }
+
+  late final _func4_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function(typedef1)>>('func4');
+  late final _func4 = _func4_ptr.asFunction<void Function(typedef1)>();
+}
+
+typedef typedef1
+    = ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Handle)>>;
+
+class struc1 extends ffi.Opaque {}
+
+class struc2 extends ffi.Struct {
+  external ffi.Pointer<ffi.Handle> h;
+}
diff --git a/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart
index 5fc47cd..355255b 100644
--- a/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart
+++ b/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart
@@ -29,8 +29,10 @@
     );
   }
 
-  late final _func_ptr = _lookup<ffi.NativeFunction<_c_func>>('func');
-  late final _dart_func _func = _func_ptr.asFunction<_dart_func>();
+  late final _func_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<A>, ffi.Int32)>>(
+          'func');
+  late final _func = _func_ptr.asFunction<void Function(ffi.Pointer<A>, int)>();
 }
 
 class A extends ffi.Struct {
@@ -45,13 +47,3 @@
   static const int a = 0;
   static const int b = 1;
 }
-
-typedef _c_func = ffi.Void Function(
-  ffi.Pointer<A> a,
-  ffi.Int32 b,
-);
-
-typedef _dart_func = void Function(
-  ffi.Pointer<A> a,
-  int b,
-);
diff --git a/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart
new file mode 100644
index 0000000..769371a
--- /dev/null
+++ b/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart
@@ -0,0 +1,114 @@
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+import 'dart:ffi' as ffi;
+
+/// Functions Test
+class NativeLibrary {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  NativeLibrary(ffi.DynamicLibrary dynamicLibrary)
+      : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  NativeLibrary.fromLookup(
+      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+          lookup)
+      : _lookup = lookup;
+
+  void func1() {
+    return _func1();
+  }
+
+  late final _func1_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>('func1');
+  late final _func1 = _func1_ptr.asFunction<void Function()>();
+
+  int func2(
+    int arg0,
+  ) {
+    return _func2(
+      arg0,
+    );
+  }
+
+  late final _func2_ptr =
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int16)>>('func2');
+  late final _func2 = _func2_ptr.asFunction<int Function(int)>();
+
+  double func3(
+    double arg0,
+    int a,
+    int arg2,
+    int b,
+  ) {
+    return _func3(
+      arg0,
+      a,
+      arg2,
+      b,
+    );
+  }
+
+  late final _func3_ptr = _lookup<ffi.NativeFunction<Native_func3>>('func3');
+  late final _func3 =
+      _func3_ptr.asFunction<double Function(double, int, int, int)>();
+
+  ffi.Pointer<ffi.Void> func4(
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> arg0,
+    double arg1,
+    ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Int32>>> arg2,
+  ) {
+    return _func4(
+      arg0,
+      arg1,
+      arg2,
+    );
+  }
+
+  late final _func4_ptr = _lookup<ffi.NativeFunction<Native_func4>>('func4');
+  late final _func4 = _func4_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>, double,
+          ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Int32>>>)>();
+
+  void func5(
+    ffi.Pointer<shortHand> a,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> b,
+  ) {
+    return _func5(
+      a,
+      b,
+    );
+  }
+
+  late final _func5_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<shortHand>,
+              ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>>('func5');
+  late final _func5 = _func5_ptr.asFunction<
+      void Function(ffi.Pointer<shortHand>,
+          ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>();
+
+  late final addresses = _SymbolAddresses(this);
+}
+
+class _SymbolAddresses {
+  final NativeLibrary _library;
+  _SymbolAddresses(this._library);
+  ffi.Pointer<ffi.NativeFunction<Native_func3>> get func3 =>
+      _library._func3_ptr;
+  ffi.Pointer<ffi.NativeFunction<Native_func4>> get func4 =>
+      _library._func4_ptr;
+}
+
+typedef Native_func3 = ffi.Double Function(
+    ffi.Float arg0, ffi.Int8 a, ffi.Int64 arg2, ffi.Int32 b);
+typedef Native_func4 = ffi.Pointer<ffi.Void> Function(
+    ffi.Pointer<ffi.Pointer<ffi.Int8>> arg0,
+    ffi.Double arg1,
+    ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Int32>>> arg2);
+typedef shortHand = ffi.NativeFunction<
+    ffi.Void Function(ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>;
diff --git a/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart
index ac068d2..5cf12c3 100644
--- a/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart
+++ b/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart
@@ -20,18 +20,36 @@
       : _lookup = lookup;
 
   void func(
-    ffi.Pointer<ffi.NativeFunction<_typedefC_4>> unnamed1,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(
+                    ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>>
+        unnamed1,
   ) {
     return _func(
       unnamed1,
     );
   }
 
-  late final _func_ptr = _lookup<ffi.NativeFunction<_c_func>>('func');
-  late final _dart_func _func = _func_ptr.asFunction<_dart_func>();
+  late final _func_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<
+                              ffi.NativeFunction<
+                                  ffi.Void Function()>>)>>)>>('func');
+  late final _func = _func_ptr.asFunction<
+      void Function(
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<
+                          ffi.NativeFunction<ffi.Void Function()>>)>>)>();
 
   void funcWithNativeFunc(
-    ffi.Pointer<ffi.NativeFunction<withTypedefReturnType>> named,
+    withTypedefReturnType named,
   ) {
     return _funcWithNativeFunc(
       named,
@@ -39,50 +57,25 @@
   }
 
   late final _funcWithNativeFunc_ptr =
-      _lookup<ffi.NativeFunction<_c_funcWithNativeFunc>>('funcWithNativeFunc');
-  late final _dart_funcWithNativeFunc _funcWithNativeFunc =
-      _funcWithNativeFunc_ptr.asFunction<_dart_funcWithNativeFunc>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(withTypedefReturnType)>>(
+          'funcWithNativeFunc');
+  late final _funcWithNativeFunc = _funcWithNativeFunc_ptr
+      .asFunction<void Function(withTypedefReturnType)>();
 }
 
 class struc extends ffi.Struct {
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_2>> unnamed1;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>> unnamed1;
 }
 
-class Struc2 extends ffi.Struct {
-  external ffi.Pointer<ffi.NativeFunction<VoidFuncPointer>> constFuncPointer;
-}
-
-typedef _typedefC_3 = ffi.Void Function();
-
-typedef _typedefC_4 = ffi.Void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_3>>,
-);
-
-typedef _c_func = ffi.Void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_4>> unnamed1,
-);
-
-typedef _dart_func = void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_4>> unnamed1,
-);
-
-typedef insideReturnType = ffi.Void Function();
-
 typedef withTypedefReturnType
-    = ffi.Pointer<ffi.NativeFunction<insideReturnType>> Function();
+    = ffi.Pointer<ffi.NativeFunction<insideReturnType Function()>>;
+typedef insideReturnType = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
 
-typedef _c_funcWithNativeFunc = ffi.Void Function(
-  ffi.Pointer<ffi.NativeFunction<withTypedefReturnType>> named,
-);
+class Struc2 extends ffi.Struct {
+  external VoidFuncPointer constFuncPointer;
+}
 
-typedef _dart_funcWithNativeFunc = void Function(
-  ffi.Pointer<ffi.NativeFunction<withTypedefReturnType>> named,
-);
-
-typedef _typedefC_1 = ffi.Void Function();
-
-typedef _typedefC_2 = ffi.Void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_1>>,
-);
-
-typedef VoidFuncPointer = ffi.Void Function();
+typedef VoidFuncPointer = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
diff --git a/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart
index c37dbaf..c8cb2e0 100644
--- a/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart
+++ b/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart
@@ -19,7 +19,7 @@
           lookup)
       : _lookup = lookup;
 
-  ffi.Pointer<B> func(
+  ffi.Pointer<B_alias> func(
     ffi.Pointer<A> a,
   ) {
     return _func(
@@ -27,8 +27,11 @@
     );
   }
 
-  late final _func_ptr = _lookup<ffi.NativeFunction<_c_func>>('func');
-  late final _dart_func _func = _func_ptr.asFunction<_dart_func>();
+  late final _func_ptr = _lookup<
+          ffi.NativeFunction<ffi.Pointer<B_alias> Function(ffi.Pointer<A>)>>(
+      'func');
+  late final _func =
+      _func_ptr.asFunction<ffi.Pointer<B_alias> Function(ffi.Pointer<A>)>();
 
   ffi.Pointer<UB> func2(
     ffi.Pointer<UA> a,
@@ -38,14 +41,25 @@
     );
   }
 
-  late final _func2_ptr = _lookup<ffi.NativeFunction<_c_func2>>('func2');
-  late final _dart_func2 _func2 = _func2_ptr.asFunction<_dart_func2>();
+  late final _func2_ptr =
+      _lookup<ffi.NativeFunction<ffi.Pointer<UB> Function(ffi.Pointer<UA>)>>(
+          'func2');
+  late final _func2 =
+      _func2_ptr.asFunction<ffi.Pointer<UB> Function(ffi.Pointer<UA>)>();
 }
 
+typedef B_alias = B;
+
 class B extends ffi.Opaque {}
 
 class A extends ffi.Opaque {}
 
+class E extends ffi.Struct {
+  external ffi.Pointer<C> c;
+
+  external D d;
+}
+
 class C extends ffi.Opaque {}
 
 class D extends ffi.Struct {
@@ -53,41 +67,19 @@
   external int a;
 }
 
-class E extends ffi.Struct {
-  external ffi.Pointer<C> c;
-
-  external D d;
-}
-
 class UB extends ffi.Opaque {}
 
 class UA extends ffi.Opaque {}
 
-class UC extends ffi.Opaque {}
-
-class UD extends ffi.Union {
-  @ffi.Int32()
-  external int a;
-}
-
 class UE extends ffi.Union {
   external ffi.Pointer<UC> c;
 
   external UD d;
 }
 
-typedef _c_func = ffi.Pointer<B> Function(
-  ffi.Pointer<A> a,
-);
+class UC extends ffi.Opaque {}
 
-typedef _dart_func = ffi.Pointer<B> Function(
-  ffi.Pointer<A> a,
-);
-
-typedef _c_func2 = ffi.Pointer<UB> Function(
-  ffi.Pointer<UA> a,
-);
-
-typedef _dart_func2 = ffi.Pointer<UB> Function(
-  ffi.Pointer<UA> a,
-);
+class UD extends ffi.Union {
+  @ffi.Int32()
+  external int a;
+}
diff --git a/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart
new file mode 100644
index 0000000..fc0d39b
--- /dev/null
+++ b/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart
@@ -0,0 +1,121 @@
+// ignore_for_file: unused_element
+// ignore_for_file: unused_field
+
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+import 'dart:ffi' as ffi;
+
+class Bindings {
+  /// Holds the symbol lookup function.
+  final ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+      _lookup;
+
+  /// The symbols are looked up in [dynamicLibrary].
+  Bindings(ffi.DynamicLibrary dynamicLibrary) : _lookup = dynamicLibrary.lookup;
+
+  /// The symbols are looked up with [lookup].
+  Bindings.fromLookup(
+      ffi.Pointer<T> Function<T extends ffi.NativeType>(String symbolName)
+          lookup)
+      : _lookup = lookup;
+
+  NamedFunctionProto func1(
+    NamedFunctionProto named,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Int32)>> unnamed,
+  ) {
+    return _func1(
+      named,
+      unnamed,
+    );
+  }
+
+  late final _func1_ptr = _lookup<
+      ffi.NativeFunction<
+          NamedFunctionProto Function(
+              NamedFunctionProto,
+              ffi.Pointer<
+                  ffi.NativeFunction<ffi.Void Function(ffi.Int32)>>)>>('func1');
+  late final _func1 = _func1_ptr.asFunction<
+      NamedFunctionProto Function(NamedFunctionProto,
+          ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Int32)>>)>();
+
+  void func2(
+    ffi.Pointer<NTyperef1> arg0,
+  ) {
+    return _func2(
+      arg0,
+    );
+  }
+
+  late final _func2_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<NTyperef1>)>>(
+          'func2');
+  late final _func2 =
+      _func2_ptr.asFunction<void Function(ffi.Pointer<NTyperef1>)>();
+
+  void func3(
+    int arg0,
+    int b,
+  ) {
+    return _func3(
+      arg0,
+      b,
+    );
+  }
+
+  late final _func3_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.IntPtr, nesting_a_specified_type)>>('func3');
+  late final _func3 = _func3_ptr.asFunction<void Function(int, int)>();
+
+  bool func4(
+    ffi.Pointer<ffi.Uint8> a,
+  ) {
+    return _func4(
+          a,
+        ) !=
+        0;
+  }
+
+  late final _func4_ptr =
+      _lookup<ffi.NativeFunction<ffi.Uint8 Function(ffi.Pointer<ffi.Uint8>)>>(
+          'func4');
+  late final _func4 =
+      _func4_ptr.asFunction<int Function(ffi.Pointer<ffi.Uint8>)>();
+}
+
+class Struct1 extends ffi.Struct {
+  external NamedFunctionProto named;
+
+  external ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> unnamed;
+}
+
+typedef NamedFunctionProto
+    = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
+
+class AnonymousStructInTypedef extends ffi.Opaque {}
+
+class _NamedStructInTypedef extends ffi.Opaque {}
+
+typedef NTyperef1 = ExcludedStruct;
+typedef ExcludedStruct = _ExcludedStruct;
+
+class _ExcludedStruct extends ffi.Opaque {}
+
+abstract class AnonymousEnumInTypedef {
+  static const int a = 0;
+}
+
+abstract class _NamedEnumInTypedef {
+  static const int b = 0;
+}
+
+typedef nesting_a_specified_type = ffi.IntPtr;
+
+class Struct2 extends ffi.Opaque {}
+
+class withBoolAlias extends ffi.Struct {
+  @ffi.Uint8()
+  external int b;
+}
diff --git a/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart b/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart
index a06659e..d102415 100644
--- a/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart
+++ b/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart
@@ -27,8 +27,11 @@
     );
   }
 
-  late final _func1_ptr = _lookup<ffi.NativeFunction<_c_func1>>('func1');
-  late final _dart_func1 _func1 = _func1_ptr.asFunction<_dart_func1>();
+  late final _func1_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<Union2>)>>(
+          'func1');
+  late final _func1 =
+      _func1_ptr.asFunction<void Function(ffi.Pointer<Union2>)>();
 
   void func2(
     ffi.Pointer<Union3> s,
@@ -38,8 +41,11 @@
     );
   }
 
-  late final _func2_ptr = _lookup<ffi.NativeFunction<_c_func2>>('func2');
-  late final _dart_func2 _func2 = _func2_ptr.asFunction<_dart_func2>();
+  late final _func2_ptr =
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<Union3>)>>(
+          'func2');
+  late final _func2 =
+      _func2_ptr.asFunction<void Function(ffi.Pointer<Union3>)>();
 }
 
 class Union1 extends ffi.Union {
@@ -56,19 +62,3 @@
 class Union4 extends ffi.Opaque {}
 
 class Union5 extends ffi.Opaque {}
-
-typedef _c_func1 = ffi.Void Function(
-  ffi.Pointer<Union2> s,
-);
-
-typedef _dart_func1 = void Function(
-  ffi.Pointer<Union2> s,
-);
-
-typedef _c_func2 = ffi.Void Function(
-  ffi.Pointer<Union3> s,
-);
-
-typedef _dart_func2 = void Function(
-  ffi.Pointer<Union3> s,
-);
diff --git a/test/header_parser_tests/forward_decl_test.dart b/test/header_parser_tests/forward_decl_test.dart
index 0d4488e..ca16de4 100644
--- a/test/header_parser_tests/forward_decl_test.dart
+++ b/test/header_parser_tests/forward_decl_test.dart
@@ -33,7 +33,7 @@
       matchLibraryWithExpected(actual, [
         'test',
         'debug_generated',
-        'forward_decl_test_output.dart'
+        'header_parser_forward_decl_test_output.dart'
       ], [
         'test',
         'header_parser_tests',
diff --git a/test/header_parser_tests/function_n_struct.h b/test/header_parser_tests/function_n_struct.h
index bae5f40..e428cf3 100644
--- a/test/header_parser_tests/function_n_struct.h
+++ b/test/header_parser_tests/function_n_struct.h
@@ -33,7 +33,16 @@
     struct Struct3 s; // Incomplete nested struct.
 };
 
+typedef int arr10[10];
+
+struct Struct6
+{
+    arr10 a[2];
+};
+
 void func1(struct Struct2 *s);
 
 // Incomplete array parameter will be treated as a pointer.
 void func2(struct Struct3 s[]);
+
+void func3(arr10 a);
diff --git a/test/header_parser_tests/function_n_struct_test.dart b/test/header_parser_tests/function_n_struct_test.dart
index 861a6bf..3b34013 100644
--- a/test/header_parser_tests/function_n_struct_test.dart
+++ b/test/header_parser_tests/function_n_struct_test.dart
@@ -56,29 +56,37 @@
     test('Struct5 incompleted struct member', () {
       expect((actual.getBinding('Struct5') as Struc).members.isEmpty, true);
     });
+    test('Struct6 typedef constant array', () {
+      expect(actual.getBindingAsString('Struct6'),
+          expected.getBindingAsString('Struct6'));
+    });
+    test('func3 constant typedef array parameter', () {
+      expect(actual.getBindingAsString('func3'),
+          expected.getBindingAsString('func3'));
+    });
   });
 }
 
 Library expectedLibrary() {
-  final struc1 = Struc(name: 'Struct1', members: []);
+  final struc1 = Struc(name: 'Struct1', members: [
+    Member(
+      name: 'a',
+      type: Type.nativeType(SupportedNativeType.Int32),
+    ),
+  ]);
   final struc2 = Struc(name: 'Struct2', members: [
     Member(
       name: 'a',
       type: Type.struct(struc1),
     ),
   ]);
-  final struc3 = Struc(name: 'Struct3', members: []);
+  final struc3 = Struc(name: 'Struct3');
   return Library(
     name: 'Bindings',
     bindings: [
+      struc1,
       struc2,
       struc3,
-      Struc(name: 'Struct1', members: [
-        Member(
-          name: 'a',
-          type: Type.nativeType(SupportedNativeType.Int32),
-        ),
-      ]),
       Func(
         name: 'func1',
         parameters: [
@@ -97,13 +105,27 @@
           SupportedNativeType.Void,
         ),
       ),
-      Struc(name: 'Struct4', members: [
-        Member(
-          name: 'a',
-          type: Type.struct(struc1),
+      Func(
+        name: 'func3',
+        parameters: [
+          Parameter(
+              name: 'a',
+              type: Type.pointer(Type.nativeType(SupportedNativeType.Int32))),
+        ],
+        returnType: Type.nativeType(
+          SupportedNativeType.Void,
         ),
-      ]),
+      ),
+      Struc(name: 'Struct4'),
       Struc(name: 'Struct5'),
+      Struc(name: 'Struct6', members: [
+        Member(
+            name: 'a',
+            type: Type.constantArray(
+                2,
+                Type.constantArray(
+                    10, Type.nativeType(SupportedNativeType.Int32))))
+      ]),
     ],
   );
 }
diff --git a/test/header_parser_tests/functions_test.dart b/test/header_parser_tests/functions_test.dart
index 6e526b1..1bfb733 100644
--- a/test/header_parser_tests/functions_test.dart
+++ b/test/header_parser_tests/functions_test.dart
@@ -17,7 +17,6 @@
   group('functions_test', () {
     setUpAll(() {
       logWarnings();
-      expected = expectedLibrary();
       actual = parser.parse(
         Config.fromYaml(yaml.loadYaml('''
 ${strings.name}: 'NativeLibrary'
@@ -38,138 +37,17 @@
         ''') as yaml.YamlMap),
       );
     });
-    test('Total bindings count', () {
-      expect(actual.bindings.length, expected.bindings.length);
-    });
-
-    test('func1', () {
-      expect(actual.getBindingAsString('func1'),
-          expected.getBindingAsString('func1'));
-    });
-    test('func2', () {
-      expect(actual.getBindingAsString('func2'),
-          expected.getBindingAsString('func2'));
-    });
-    test('func3', () {
-      expect(actual.getBindingAsString('func3'),
-          expected.getBindingAsString('func3'));
-    });
-
-    test('func4', () {
-      expect(actual.getBindingAsString('func4'),
-          expected.getBindingAsString('func4'));
-    });
-
-    test('func5', () {
-      expect(actual.getBindingAsString('func5'),
-          expected.getBindingAsString('func5'));
-    });
-
-    test('Skip inline functions', () {
-      expect(() => actual.getBindingAsString('inlineFunc'),
-          throwsA(TypeMatcher<NotFoundException>()));
+    test('Expected Bindings', () {
+      matchLibraryWithExpected(actual, [
+        'test',
+        'debug_generated',
+        'header_parser_functions_test_output.dart'
+      ], [
+        'test',
+        'header_parser_tests',
+        'expected_bindings',
+        '_expected_functions_bindings.dart'
+      ]);
     });
   });
 }
-
-Library expectedLibrary() {
-  return Library(
-    name: 'Bindings',
-    bindings: [
-      Func(
-        name: 'func1',
-        returnType: Type.nativeType(
-          SupportedNativeType.Void,
-        ),
-      ),
-      Func(
-        name: 'func2',
-        returnType: Type.nativeType(
-          SupportedNativeType.Int32,
-        ),
-        parameters: [
-          Parameter(
-            name: '',
-            type: Type.nativeType(
-              SupportedNativeType.Int16,
-            ),
-          ),
-        ],
-      ),
-      Func(
-        name: 'func3',
-        exposeSymbolAddress: true,
-        returnType: Type.nativeType(
-          SupportedNativeType.Double,
-        ),
-        parameters: [
-          Parameter(
-            type: Type.nativeType(
-              SupportedNativeType.Float,
-            ),
-          ),
-          Parameter(
-            name: 'a',
-            type: Type.nativeType(
-              SupportedNativeType.Int8,
-            ),
-          ),
-          Parameter(
-            name: '',
-            type: Type.nativeType(
-              SupportedNativeType.Int64,
-            ),
-          ),
-          Parameter(
-            name: 'b',
-            type: Type.nativeType(
-              SupportedNativeType.Int32,
-            ),
-          ),
-        ],
-      ),
-      Func(
-          name: 'func4',
-          exposeSymbolAddress: true,
-          returnType: Type.pointer(Type.nativeType(SupportedNativeType.Void)),
-          parameters: [
-            Parameter(
-                type: Type.pointer(
-                    Type.pointer(Type.nativeType(SupportedNativeType.Int8)))),
-            Parameter(type: Type.nativeType(SupportedNativeType.Double)),
-            Parameter(
-              type: Type.pointer(Type.pointer(
-                  Type.pointer(Type.nativeType(SupportedNativeType.Int32)))),
-            ),
-          ]),
-      Func(
-        name: 'func5',
-        returnType: Type.nativeType(SupportedNativeType.Void),
-        parameters: [
-          Parameter(
-              name: 'a',
-              type: Type.pointer(Type.nativeFunc(Typedef(
-                name: 'shortHand',
-                returnType: Type.nativeType(SupportedNativeType.Void),
-                typedefType: TypedefType.C,
-                parameters: [
-                  Parameter(
-                      type: Type.pointer(Type.nativeFunc(Typedef(
-                    name: 'b',
-                    returnType: Type.nativeType(SupportedNativeType.Void),
-                    typedefType: TypedefType.C,
-                  )))),
-                ],
-              )))),
-          Parameter(
-              name: 'b',
-              type: Type.pointer(Type.nativeFunc(Typedef(
-                name: '_typedefC_2',
-                returnType: Type.nativeType(SupportedNativeType.Void),
-                typedefType: TypedefType.C,
-              )))),
-        ],
-      ),
-    ],
-  );
-}
diff --git a/test/header_parser_tests/globals.h b/test/header_parser_tests/globals.h
index 80da2b0..5ce3fc5 100644
--- a/test/header_parser_tests/globals.h
+++ b/test/header_parser_tests/globals.h
@@ -19,3 +19,6 @@
 };
 
 struct EmptyStruct globalStruct;
+
+typedef struct EmptyStruct EmptyStruct_Alias;
+EmptyStruct_Alias globalStruct_from_alias;
diff --git a/test/header_parser_tests/globals_test.dart b/test/header_parser_tests/globals_test.dart
index 467be8a..be10f3c 100644
--- a/test/header_parser_tests/globals_test.dart
+++ b/test/header_parser_tests/globals_test.dart
@@ -87,6 +87,16 @@
         type: Type.struct(globalStruc),
         exposeSymbolAddress: true,
       ),
+      Global(
+        name: 'globalStruct_from_alias',
+        type: Type.typealias(
+          Typealias(
+            name: 'EmptyStruct_Alias',
+            type: Type.struct(globalStruc),
+          ),
+        ),
+        exposeSymbolAddress: true,
+      )
     ],
   );
 }
diff --git a/test/header_parser_tests/native_func_typedef_test.dart b/test/header_parser_tests/native_func_typedef_test.dart
index cc348cb..4f9187c 100644
--- a/test/header_parser_tests/native_func_typedef_test.dart
+++ b/test/header_parser_tests/native_func_typedef_test.dart
@@ -38,7 +38,7 @@
       matchLibraryWithExpected(actual, [
         'test',
         'debug_generated',
-        'native_func_typedef_test_output.dart'
+        'header_parser_native_func_typedef_test_output.dart'
       ], [
         'test',
         'header_parser_tests',
diff --git a/test/header_parser_tests/opaque_dependencies.h b/test/header_parser_tests/opaque_dependencies.h
index e30b260..2825911 100644
--- a/test/header_parser_tests/opaque_dependencies.h
+++ b/test/header_parser_tests/opaque_dependencies.h
@@ -9,12 +9,12 @@
 };
 
 // Opaque.
-struct B
+typedef struct B
 {
     int a;
-};
+} B_alias;
 
-struct B *func(struct A *a);
+B_alias *func(struct A *a);
 
 // Opaque.
 struct C
diff --git a/test/header_parser_tests/opaque_dependencies_test.dart b/test/header_parser_tests/opaque_dependencies_test.dart
index 101e8db..782f761 100644
--- a/test/header_parser_tests/opaque_dependencies_test.dart
+++ b/test/header_parser_tests/opaque_dependencies_test.dart
@@ -36,12 +36,11 @@
         ''') as yaml.YamlMap),
       );
     });
-
     test('Expected bindings', () {
       matchLibraryWithExpected(actual, [
         'test',
         'debug_generated',
-        'opaque_dependencies_test_output.dart'
+        'header_parser_opaque_dependencies_test_output.dart'
       ], [
         'test',
         'header_parser_tests',
diff --git a/test/header_parser_tests/packed_structs_test.dart b/test/header_parser_tests/packed_structs_test.dart
index 4e99c03..357412e 100644
--- a/test/header_parser_tests/packed_structs_test.dart
+++ b/test/header_parser_tests/packed_structs_test.dart
@@ -33,7 +33,7 @@
       matchLibraryWithExpected(actual, [
         'test',
         'debug_generated',
-        'packed_structs_test_output.dart'
+        'header_parser_packed_structs_test_output.dart'
       ], [
         'test',
         'header_parser_tests',
diff --git a/test/header_parser_tests/typedef.h b/test/header_parser_tests/typedef.h
index a8e9cd6..73e7e2e 100644
--- a/test/header_parser_tests/typedef.h
+++ b/test/header_parser_tests/typedef.h
@@ -2,6 +2,8 @@
 // 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.
 
+#include<stdbool.h>
+
 typedef void (*NamedFunctionProto)();
 
 struct Struct1
@@ -59,3 +61,11 @@
 typedef struct
 {
 } Struct2, Struct3, *pStruct2, *pStruct3;
+
+typedef bool bool_alias;
+
+bool_alias func4(bool_alias *a);
+
+struct withBoolAlias{
+    bool_alias b;
+};
diff --git a/test/header_parser_tests/typedef_test.dart b/test/header_parser_tests/typedef_test.dart
index 4e3daa5..53417c2 100644
--- a/test/header_parser_tests/typedef_test.dart
+++ b/test/header_parser_tests/typedef_test.dart
@@ -18,7 +18,6 @@
   group('typedef_test', () {
     setUpAll(() {
       logWarnings(Level.SEVERE);
-      expected = expectedLibrary();
       actual = parser.parse(
         Config.fromYaml(yaml.loadYaml('''
 ${strings.name}: 'Bindings'
@@ -27,102 +26,33 @@
 ${strings.headers}:
   ${strings.entryPoints}:
     - 'test/header_parser_tests/typedef.h'
+  ${strings.includeDirectives}:
+    - '**typedef.h'
 ${strings.structs}:
   ${strings.exclude}:
     - ExcludedStruct
     - _ExcludedStruct
 ${strings.typedefmap}:
   'specified_type_as_IntPtr': 'IntPtr'
+
+${strings.preamble}: |
+  // ignore_for_file: unused_element
+  // ignore_for_file: unused_field
         ''') as yaml.YamlMap),
       );
     });
 
-    test('Library output', () {
-      expect(actual.generate(), expected.generate());
+    test('Expected Bindings', () {
+      matchLibraryWithExpected(actual, [
+        'test',
+        'debug_generated',
+        'header_parser_typedef_test_output.dart'
+      ], [
+        'test',
+        'header_parser_tests',
+        'expected_bindings',
+        '_expected_typedef_bindings.dart'
+      ]);
     });
   });
 }
-
-Library expectedLibrary() {
-  final namedTypedef = Typedef(
-    name: 'NamedFunctionProto',
-    typedefType: TypedefType.C,
-    returnType: Type.nativeType(SupportedNativeType.Void),
-  );
-
-  final excludedNtyperef = Struc(name: 'NTyperef1');
-  return Library(
-    name: 'Bindings',
-    bindings: [
-      Struc(name: 'Struct1', members: [
-        Member(
-          name: 'named',
-          type: Type.pointer(Type.nativeFunc(namedTypedef)),
-        ),
-        Member(
-          name: 'unnamed',
-          type: Type.pointer(Type.nativeFunc(Typedef(
-            name: '_typedefC_1',
-            typedefType: TypedefType.C,
-            returnType: Type.nativeType(SupportedNativeType.Void),
-          ))),
-        ),
-      ]),
-      Func(
-        name: 'func1',
-        parameters: [
-          Parameter(
-            name: 'named',
-            type: Type.pointer(Type.nativeFunc(namedTypedef)),
-          ),
-          Parameter(
-            name: 'unnamed',
-            type: Type.pointer(Type.nativeFunc(Typedef(
-              name: '_typedefC_2',
-              typedefType: TypedefType.C,
-              parameters: [
-                Parameter(type: Type.nativeType(SupportedNativeType.Int32)),
-              ],
-              returnType: Type.nativeType(SupportedNativeType.Void),
-            ))),
-          ),
-        ],
-        returnType: Type.pointer(Type.nativeFunc(namedTypedef)),
-      ),
-      Struc(name: 'AnonymousStructInTypedef'),
-      Struc(name: 'NamedStructInTypedef'),
-      excludedNtyperef,
-      Func(
-        name: 'func2',
-        returnType: Type.nativeType(SupportedNativeType.Void),
-        parameters: [
-          Parameter(type: Type.pointer(Type.struct(excludedNtyperef)))
-        ],
-      ),
-      EnumClass(
-        name: 'AnonymousEnumInTypedef',
-        enumConstants: [
-          EnumConstant(name: 'a', value: 0),
-        ],
-      ),
-      EnumClass(
-        name: 'NamedEnumInTypedef',
-        enumConstants: [
-          EnumConstant(name: 'b', value: 0),
-        ],
-      ),
-      Func(
-        name: 'func3',
-        returnType: Type.nativeType(SupportedNativeType.Void),
-        parameters: [
-          Parameter(type: Type.nativeType(SupportedNativeType.IntPtr)),
-          Parameter(
-            type: Type.nativeType(SupportedNativeType.IntPtr),
-            name: 'b',
-          ),
-        ],
-      ),
-      Struc(name: 'Struct3'),
-    ],
-  );
-}
diff --git a/test/header_parser_tests/unions_test.dart b/test/header_parser_tests/unions_test.dart
index 699f93d..5146d62 100644
--- a/test/header_parser_tests/unions_test.dart
+++ b/test/header_parser_tests/unions_test.dart
@@ -33,7 +33,7 @@
       matchLibraryWithExpected(actual, [
         'test',
         'debug_generated',
-        'unions_test_output.dart'
+        'header_parser_unions_test_output.dart'
       ], [
         'test',
         'header_parser_tests',
diff --git a/test/large_integration_tests/_expected_cjson_bindings.dart b/test/large_integration_tests/_expected_cjson_bindings.dart
index 818416a..73257d0 100644
--- a/test/large_integration_tests/_expected_cjson_bindings.dart
+++ b/test/large_integration_tests/_expected_cjson_bindings.dart
@@ -23,9 +23,10 @@
   }
 
   late final _cJSON_Version_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Version>>('cJSON_Version');
-  late final _dart_cJSON_Version _cJSON_Version =
-      _cJSON_Version_ptr.asFunction<_dart_cJSON_Version>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function()>>(
+          'cJSON_Version');
+  late final _cJSON_Version =
+      _cJSON_Version_ptr.asFunction<ffi.Pointer<ffi.Int8> Function()>();
 
   void cJSON_InitHooks(
     ffi.Pointer<cJSON_Hooks> hooks,
@@ -36,9 +37,10 @@
   }
 
   late final _cJSON_InitHooks_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_InitHooks>>('cJSON_InitHooks');
-  late final _dart_cJSON_InitHooks _cJSON_InitHooks =
-      _cJSON_InitHooks_ptr.asFunction<_dart_cJSON_InitHooks>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<cJSON_Hooks>)>>(
+          'cJSON_InitHooks');
+  late final _cJSON_InitHooks = _cJSON_InitHooks_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON_Hooks>)>();
 
   ffi.Pointer<cJSON> cJSON_Parse(
     ffi.Pointer<ffi.Int8> value,
@@ -48,10 +50,11 @@
     );
   }
 
-  late final _cJSON_Parse_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Parse>>('cJSON_Parse');
-  late final _dart_cJSON_Parse _cJSON_Parse =
-      _cJSON_Parse_ptr.asFunction<_dart_cJSON_Parse>();
+  late final _cJSON_Parse_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>>('cJSON_Parse');
+  late final _cJSON_Parse = _cJSON_Parse_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_ParseWithOpts(
     ffi.Pointer<ffi.Int8> value,
@@ -65,11 +68,15 @@
     );
   }
 
-  late final _cJSON_ParseWithOpts_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ParseWithOpts>>(
-          'cJSON_ParseWithOpts');
-  late final _dart_cJSON_ParseWithOpts _cJSON_ParseWithOpts =
-      _cJSON_ParseWithOpts_ptr.asFunction<_dart_cJSON_ParseWithOpts>();
+  late final _cJSON_ParseWithOpts_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              cJSON_bool)>>('cJSON_ParseWithOpts');
+  late final _cJSON_ParseWithOpts = _cJSON_ParseWithOpts_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Pointer<ffi.Int8>>, int)>();
 
   ffi.Pointer<ffi.Int8> cJSON_Print(
     ffi.Pointer<cJSON> item,
@@ -79,10 +86,11 @@
     );
   }
 
-  late final _cJSON_Print_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Print>>('cJSON_Print');
-  late final _dart_cJSON_Print _cJSON_Print =
-      _cJSON_Print_ptr.asFunction<_dart_cJSON_Print>();
+  late final _cJSON_Print_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>>('cJSON_Print');
+  late final _cJSON_Print = _cJSON_Print_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<ffi.Int8> cJSON_PrintUnformatted(
     ffi.Pointer<cJSON> item,
@@ -92,11 +100,12 @@
     );
   }
 
-  late final _cJSON_PrintUnformatted_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_PrintUnformatted>>(
-          'cJSON_PrintUnformatted');
-  late final _dart_cJSON_PrintUnformatted _cJSON_PrintUnformatted =
-      _cJSON_PrintUnformatted_ptr.asFunction<_dart_cJSON_PrintUnformatted>();
+  late final _cJSON_PrintUnformatted_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<cJSON>)>>('cJSON_PrintUnformatted');
+  late final _cJSON_PrintUnformatted = _cJSON_PrintUnformatted_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<ffi.Int8> cJSON_PrintBuffered(
     ffi.Pointer<cJSON> item,
@@ -110,11 +119,12 @@
     );
   }
 
-  late final _cJSON_PrintBuffered_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_PrintBuffered>>(
-          'cJSON_PrintBuffered');
-  late final _dart_cJSON_PrintBuffered _cJSON_PrintBuffered =
-      _cJSON_PrintBuffered_ptr.asFunction<_dart_cJSON_PrintBuffered>();
+  late final _cJSON_PrintBuffered_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>, ffi.Int32,
+              cJSON_bool)>>('cJSON_PrintBuffered');
+  late final _cJSON_PrintBuffered = _cJSON_PrintBuffered_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>, int, int)>();
 
   int cJSON_PrintPreallocated(
     ffi.Pointer<cJSON> item,
@@ -130,11 +140,12 @@
     );
   }
 
-  late final _cJSON_PrintPreallocated_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_PrintPreallocated>>(
-          'cJSON_PrintPreallocated');
-  late final _dart_cJSON_PrintPreallocated _cJSON_PrintPreallocated =
-      _cJSON_PrintPreallocated_ptr.asFunction<_dart_cJSON_PrintPreallocated>();
+  late final _cJSON_PrintPreallocated_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32, cJSON_bool)>>('cJSON_PrintPreallocated');
+  late final _cJSON_PrintPreallocated = _cJSON_PrintPreallocated_ptr.asFunction<
+      int Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, int, int)>();
 
   void cJSON_Delete(
     ffi.Pointer<cJSON> item,
@@ -145,9 +156,10 @@
   }
 
   late final _cJSON_Delete_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Delete>>('cJSON_Delete');
-  late final _dart_cJSON_Delete _cJSON_Delete =
-      _cJSON_Delete_ptr.asFunction<_dart_cJSON_Delete>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_Delete');
+  late final _cJSON_Delete =
+      _cJSON_Delete_ptr.asFunction<void Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_GetArraySize(
     ffi.Pointer<cJSON> array,
@@ -158,9 +170,10 @@
   }
 
   late final _cJSON_GetArraySize_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetArraySize>>('cJSON_GetArraySize');
-  late final _dart_cJSON_GetArraySize _cJSON_GetArraySize =
-      _cJSON_GetArraySize_ptr.asFunction<_dart_cJSON_GetArraySize>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_GetArraySize');
+  late final _cJSON_GetArraySize =
+      _cJSON_GetArraySize_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_GetArrayItem(
     ffi.Pointer<cJSON> array,
@@ -172,10 +185,12 @@
     );
   }
 
-  late final _cJSON_GetArrayItem_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetArrayItem>>('cJSON_GetArrayItem');
-  late final _dart_cJSON_GetArrayItem _cJSON_GetArrayItem =
-      _cJSON_GetArrayItem_ptr.asFunction<_dart_cJSON_GetArrayItem>();
+  late final _cJSON_GetArrayItem_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Int32)>>('cJSON_GetArrayItem');
+  late final _cJSON_GetArrayItem = _cJSON_GetArrayItem_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, int)>();
 
   ffi.Pointer<cJSON> cJSON_GetObjectItem(
     ffi.Pointer<cJSON> object,
@@ -187,11 +202,12 @@
     );
   }
 
-  late final _cJSON_GetObjectItem_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetObjectItem>>(
-          'cJSON_GetObjectItem');
-  late final _dart_cJSON_GetObjectItem _cJSON_GetObjectItem =
-      _cJSON_GetObjectItem_ptr.asFunction<_dart_cJSON_GetObjectItem>();
+  late final _cJSON_GetObjectItem_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_GetObjectItem');
+  late final _cJSON_GetObjectItem = _cJSON_GetObjectItem_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_GetObjectItemCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -203,12 +219,14 @@
     );
   }
 
-  late final _cJSON_GetObjectItemCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetObjectItemCaseSensitive>>(
-          'cJSON_GetObjectItemCaseSensitive');
-  late final _dart_cJSON_GetObjectItemCaseSensitive
-      _cJSON_GetObjectItemCaseSensitive = _cJSON_GetObjectItemCaseSensitive_ptr
-          .asFunction<_dart_cJSON_GetObjectItemCaseSensitive>();
+  late final _cJSON_GetObjectItemCaseSensitive_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_GetObjectItemCaseSensitive');
+  late final _cJSON_GetObjectItemCaseSensitive =
+      _cJSON_GetObjectItemCaseSensitive_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   int cJSON_HasObjectItem(
     ffi.Pointer<cJSON> object,
@@ -220,20 +238,22 @@
     );
   }
 
-  late final _cJSON_HasObjectItem_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_HasObjectItem>>(
-          'cJSON_HasObjectItem');
-  late final _dart_cJSON_HasObjectItem _cJSON_HasObjectItem =
-      _cJSON_HasObjectItem_ptr.asFunction<_dart_cJSON_HasObjectItem>();
+  late final _cJSON_HasObjectItem_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_HasObjectItem');
+  late final _cJSON_HasObjectItem = _cJSON_HasObjectItem_ptr
+      .asFunction<int Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<ffi.Int8> cJSON_GetErrorPtr() {
     return _cJSON_GetErrorPtr();
   }
 
   late final _cJSON_GetErrorPtr_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetErrorPtr>>('cJSON_GetErrorPtr');
-  late final _dart_cJSON_GetErrorPtr _cJSON_GetErrorPtr =
-      _cJSON_GetErrorPtr_ptr.asFunction<_dart_cJSON_GetErrorPtr>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function()>>(
+          'cJSON_GetErrorPtr');
+  late final _cJSON_GetErrorPtr =
+      _cJSON_GetErrorPtr_ptr.asFunction<ffi.Pointer<ffi.Int8> Function()>();
 
   ffi.Pointer<ffi.Int8> cJSON_GetStringValue(
     ffi.Pointer<cJSON> item,
@@ -243,11 +263,12 @@
     );
   }
 
-  late final _cJSON_GetStringValue_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_GetStringValue>>(
-          'cJSON_GetStringValue');
-  late final _dart_cJSON_GetStringValue _cJSON_GetStringValue =
-      _cJSON_GetStringValue_ptr.asFunction<_dart_cJSON_GetStringValue>();
+  late final _cJSON_GetStringValue_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<cJSON>)>>('cJSON_GetStringValue');
+  late final _cJSON_GetStringValue = _cJSON_GetStringValue_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsInvalid(
     ffi.Pointer<cJSON> item,
@@ -258,9 +279,10 @@
   }
 
   late final _cJSON_IsInvalid_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsInvalid>>('cJSON_IsInvalid');
-  late final _dart_cJSON_IsInvalid _cJSON_IsInvalid =
-      _cJSON_IsInvalid_ptr.asFunction<_dart_cJSON_IsInvalid>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsInvalid');
+  late final _cJSON_IsInvalid =
+      _cJSON_IsInvalid_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsFalse(
     ffi.Pointer<cJSON> item,
@@ -271,9 +293,10 @@
   }
 
   late final _cJSON_IsFalse_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsFalse>>('cJSON_IsFalse');
-  late final _dart_cJSON_IsFalse _cJSON_IsFalse =
-      _cJSON_IsFalse_ptr.asFunction<_dart_cJSON_IsFalse>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsFalse');
+  late final _cJSON_IsFalse =
+      _cJSON_IsFalse_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsTrue(
     ffi.Pointer<cJSON> item,
@@ -284,9 +307,10 @@
   }
 
   late final _cJSON_IsTrue_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsTrue>>('cJSON_IsTrue');
-  late final _dart_cJSON_IsTrue _cJSON_IsTrue =
-      _cJSON_IsTrue_ptr.asFunction<_dart_cJSON_IsTrue>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsTrue');
+  late final _cJSON_IsTrue =
+      _cJSON_IsTrue_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsBool(
     ffi.Pointer<cJSON> item,
@@ -297,9 +321,10 @@
   }
 
   late final _cJSON_IsBool_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsBool>>('cJSON_IsBool');
-  late final _dart_cJSON_IsBool _cJSON_IsBool =
-      _cJSON_IsBool_ptr.asFunction<_dart_cJSON_IsBool>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsBool');
+  late final _cJSON_IsBool =
+      _cJSON_IsBool_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsNull(
     ffi.Pointer<cJSON> item,
@@ -310,9 +335,10 @@
   }
 
   late final _cJSON_IsNull_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsNull>>('cJSON_IsNull');
-  late final _dart_cJSON_IsNull _cJSON_IsNull =
-      _cJSON_IsNull_ptr.asFunction<_dart_cJSON_IsNull>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsNull');
+  late final _cJSON_IsNull =
+      _cJSON_IsNull_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsNumber(
     ffi.Pointer<cJSON> item,
@@ -323,9 +349,10 @@
   }
 
   late final _cJSON_IsNumber_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsNumber>>('cJSON_IsNumber');
-  late final _dart_cJSON_IsNumber _cJSON_IsNumber =
-      _cJSON_IsNumber_ptr.asFunction<_dart_cJSON_IsNumber>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsNumber');
+  late final _cJSON_IsNumber =
+      _cJSON_IsNumber_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsString(
     ffi.Pointer<cJSON> item,
@@ -336,9 +363,10 @@
   }
 
   late final _cJSON_IsString_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsString>>('cJSON_IsString');
-  late final _dart_cJSON_IsString _cJSON_IsString =
-      _cJSON_IsString_ptr.asFunction<_dart_cJSON_IsString>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsString');
+  late final _cJSON_IsString =
+      _cJSON_IsString_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsArray(
     ffi.Pointer<cJSON> item,
@@ -349,9 +377,10 @@
   }
 
   late final _cJSON_IsArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsArray>>('cJSON_IsArray');
-  late final _dart_cJSON_IsArray _cJSON_IsArray =
-      _cJSON_IsArray_ptr.asFunction<_dart_cJSON_IsArray>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsArray');
+  late final _cJSON_IsArray =
+      _cJSON_IsArray_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsObject(
     ffi.Pointer<cJSON> item,
@@ -362,9 +391,10 @@
   }
 
   late final _cJSON_IsObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsObject>>('cJSON_IsObject');
-  late final _dart_cJSON_IsObject _cJSON_IsObject =
-      _cJSON_IsObject_ptr.asFunction<_dart_cJSON_IsObject>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsObject');
+  late final _cJSON_IsObject =
+      _cJSON_IsObject_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   int cJSON_IsRaw(
     ffi.Pointer<cJSON> item,
@@ -375,36 +405,40 @@
   }
 
   late final _cJSON_IsRaw_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_IsRaw>>('cJSON_IsRaw');
-  late final _dart_cJSON_IsRaw _cJSON_IsRaw =
-      _cJSON_IsRaw_ptr.asFunction<_dart_cJSON_IsRaw>();
+      _lookup<ffi.NativeFunction<cJSON_bool Function(ffi.Pointer<cJSON>)>>(
+          'cJSON_IsRaw');
+  late final _cJSON_IsRaw =
+      _cJSON_IsRaw_ptr.asFunction<int Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateNull() {
     return _cJSON_CreateNull();
   }
 
   late final _cJSON_CreateNull_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateNull>>('cJSON_CreateNull');
-  late final _dart_cJSON_CreateNull _cJSON_CreateNull =
-      _cJSON_CreateNull_ptr.asFunction<_dart_cJSON_CreateNull>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateNull');
+  late final _cJSON_CreateNull =
+      _cJSON_CreateNull_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateTrue() {
     return _cJSON_CreateTrue();
   }
 
   late final _cJSON_CreateTrue_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateTrue>>('cJSON_CreateTrue');
-  late final _dart_cJSON_CreateTrue _cJSON_CreateTrue =
-      _cJSON_CreateTrue_ptr.asFunction<_dart_cJSON_CreateTrue>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateTrue');
+  late final _cJSON_CreateTrue =
+      _cJSON_CreateTrue_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateFalse() {
     return _cJSON_CreateFalse();
   }
 
   late final _cJSON_CreateFalse_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateFalse>>('cJSON_CreateFalse');
-  late final _dart_cJSON_CreateFalse _cJSON_CreateFalse =
-      _cJSON_CreateFalse_ptr.asFunction<_dart_cJSON_CreateFalse>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateFalse');
+  late final _cJSON_CreateFalse =
+      _cJSON_CreateFalse_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateBool(
     int boolean,
@@ -415,9 +449,10 @@
   }
 
   late final _cJSON_CreateBool_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateBool>>('cJSON_CreateBool');
-  late final _dart_cJSON_CreateBool _cJSON_CreateBool =
-      _cJSON_CreateBool_ptr.asFunction<_dart_cJSON_CreateBool>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function(cJSON_bool)>>(
+          'cJSON_CreateBool');
+  late final _cJSON_CreateBool =
+      _cJSON_CreateBool_ptr.asFunction<ffi.Pointer<cJSON> Function(int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateNumber(
     double num,
@@ -428,9 +463,10 @@
   }
 
   late final _cJSON_CreateNumber_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateNumber>>('cJSON_CreateNumber');
-  late final _dart_cJSON_CreateNumber _cJSON_CreateNumber =
-      _cJSON_CreateNumber_ptr.asFunction<_dart_cJSON_CreateNumber>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function(ffi.Double)>>(
+          'cJSON_CreateNumber');
+  late final _cJSON_CreateNumber =
+      _cJSON_CreateNumber_ptr.asFunction<ffi.Pointer<cJSON> Function(double)>();
 
   ffi.Pointer<cJSON> cJSON_CreateString(
     ffi.Pointer<ffi.Int8> string,
@@ -440,10 +476,12 @@
     );
   }
 
-  late final _cJSON_CreateString_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateString>>('cJSON_CreateString');
-  late final _dart_cJSON_CreateString _cJSON_CreateString =
-      _cJSON_CreateString_ptr.asFunction<_dart_cJSON_CreateString>();
+  late final _cJSON_CreateString_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>)>>('cJSON_CreateString');
+  late final _cJSON_CreateString = _cJSON_CreateString_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateRaw(
     ffi.Pointer<ffi.Int8> raw,
@@ -453,28 +491,32 @@
     );
   }
 
-  late final _cJSON_CreateRaw_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateRaw>>('cJSON_CreateRaw');
-  late final _dart_cJSON_CreateRaw _cJSON_CreateRaw =
-      _cJSON_CreateRaw_ptr.asFunction<_dart_cJSON_CreateRaw>();
+  late final _cJSON_CreateRaw_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>)>>('cJSON_CreateRaw');
+  late final _cJSON_CreateRaw = _cJSON_CreateRaw_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateArray() {
     return _cJSON_CreateArray();
   }
 
   late final _cJSON_CreateArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateArray>>('cJSON_CreateArray');
-  late final _dart_cJSON_CreateArray _cJSON_CreateArray =
-      _cJSON_CreateArray_ptr.asFunction<_dart_cJSON_CreateArray>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateArray');
+  late final _cJSON_CreateArray =
+      _cJSON_CreateArray_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateObject() {
     return _cJSON_CreateObject();
   }
 
   late final _cJSON_CreateObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateObject>>('cJSON_CreateObject');
-  late final _dart_cJSON_CreateObject _cJSON_CreateObject =
-      _cJSON_CreateObject_ptr.asFunction<_dart_cJSON_CreateObject>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<cJSON> Function()>>(
+          'cJSON_CreateObject');
+  late final _cJSON_CreateObject =
+      _cJSON_CreateObject_ptr.asFunction<ffi.Pointer<cJSON> Function()>();
 
   ffi.Pointer<cJSON> cJSON_CreateStringReference(
     ffi.Pointer<ffi.Int8> string,
@@ -484,12 +526,12 @@
     );
   }
 
-  late final _cJSON_CreateStringReference_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateStringReference>>(
-          'cJSON_CreateStringReference');
-  late final _dart_cJSON_CreateStringReference _cJSON_CreateStringReference =
-      _cJSON_CreateStringReference_ptr
-          .asFunction<_dart_cJSON_CreateStringReference>();
+  late final _cJSON_CreateStringReference_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int8>)>>('cJSON_CreateStringReference');
+  late final _cJSON_CreateStringReference = _cJSON_CreateStringReference_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateObjectReference(
     ffi.Pointer<cJSON> child,
@@ -499,12 +541,11 @@
     );
   }
 
-  late final _cJSON_CreateObjectReference_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateObjectReference>>(
-          'cJSON_CreateObjectReference');
-  late final _dart_cJSON_CreateObjectReference _cJSON_CreateObjectReference =
-      _cJSON_CreateObjectReference_ptr
-          .asFunction<_dart_cJSON_CreateObjectReference>();
+  late final _cJSON_CreateObjectReference_ptr = _lookup<
+          ffi.NativeFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>>(
+      'cJSON_CreateObjectReference');
+  late final _cJSON_CreateObjectReference = _cJSON_CreateObjectReference_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateArrayReference(
     ffi.Pointer<cJSON> child,
@@ -514,12 +555,11 @@
     );
   }
 
-  late final _cJSON_CreateArrayReference_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateArrayReference>>(
-          'cJSON_CreateArrayReference');
-  late final _dart_cJSON_CreateArrayReference _cJSON_CreateArrayReference =
-      _cJSON_CreateArrayReference_ptr
-          .asFunction<_dart_cJSON_CreateArrayReference>();
+  late final _cJSON_CreateArrayReference_ptr = _lookup<
+          ffi.NativeFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>>(
+      'cJSON_CreateArrayReference');
+  late final _cJSON_CreateArrayReference = _cJSON_CreateArrayReference_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_CreateIntArray(
     ffi.Pointer<ffi.Int32> numbers,
@@ -531,11 +571,12 @@
     );
   }
 
-  late final _cJSON_CreateIntArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateIntArray>>(
-          'cJSON_CreateIntArray');
-  late final _dart_cJSON_CreateIntArray _cJSON_CreateIntArray =
-      _cJSON_CreateIntArray_ptr.asFunction<_dart_cJSON_CreateIntArray>();
+  late final _cJSON_CreateIntArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Int32>, ffi.Int32)>>('cJSON_CreateIntArray');
+  late final _cJSON_CreateIntArray = _cJSON_CreateIntArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Int32>, int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateFloatArray(
     ffi.Pointer<ffi.Float> numbers,
@@ -547,11 +588,12 @@
     );
   }
 
-  late final _cJSON_CreateFloatArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateFloatArray>>(
-          'cJSON_CreateFloatArray');
-  late final _dart_cJSON_CreateFloatArray _cJSON_CreateFloatArray =
-      _cJSON_CreateFloatArray_ptr.asFunction<_dart_cJSON_CreateFloatArray>();
+  late final _cJSON_CreateFloatArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Float>, ffi.Int32)>>('cJSON_CreateFloatArray');
+  late final _cJSON_CreateFloatArray = _cJSON_CreateFloatArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Float>, int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateDoubleArray(
     ffi.Pointer<ffi.Double> numbers,
@@ -563,11 +605,12 @@
     );
   }
 
-  late final _cJSON_CreateDoubleArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateDoubleArray>>(
-          'cJSON_CreateDoubleArray');
-  late final _dart_cJSON_CreateDoubleArray _cJSON_CreateDoubleArray =
-      _cJSON_CreateDoubleArray_ptr.asFunction<_dart_cJSON_CreateDoubleArray>();
+  late final _cJSON_CreateDoubleArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<ffi.Double>, ffi.Int32)>>('cJSON_CreateDoubleArray');
+  late final _cJSON_CreateDoubleArray = _cJSON_CreateDoubleArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Double>, int)>();
 
   ffi.Pointer<cJSON> cJSON_CreateStringArray(
     ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
@@ -579,11 +622,12 @@
     );
   }
 
-  late final _cJSON_CreateStringArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_CreateStringArray>>(
-          'cJSON_CreateStringArray');
-  late final _dart_cJSON_CreateStringArray _cJSON_CreateStringArray =
-      _cJSON_CreateStringArray_ptr.asFunction<_dart_cJSON_CreateStringArray>();
+  late final _cJSON_CreateStringArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32)>>('cJSON_CreateStringArray');
+  late final _cJSON_CreateStringArray = _cJSON_CreateStringArray_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>, int)>();
 
   void cJSON_AddItemToArray(
     ffi.Pointer<cJSON> array,
@@ -595,11 +639,12 @@
     );
   }
 
-  late final _cJSON_AddItemToArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemToArray>>(
-          'cJSON_AddItemToArray');
-  late final _dart_cJSON_AddItemToArray _cJSON_AddItemToArray =
-      _cJSON_AddItemToArray_ptr.asFunction<_dart_cJSON_AddItemToArray>();
+  late final _cJSON_AddItemToArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>>('cJSON_AddItemToArray');
+  late final _cJSON_AddItemToArray = _cJSON_AddItemToArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemToObject(
     ffi.Pointer<cJSON> object,
@@ -613,11 +658,13 @@
     );
   }
 
-  late final _cJSON_AddItemToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemToObject>>(
-          'cJSON_AddItemToObject');
-  late final _dart_cJSON_AddItemToObject _cJSON_AddItemToObject =
-      _cJSON_AddItemToObject_ptr.asFunction<_dart_cJSON_AddItemToObject>();
+  late final _cJSON_AddItemToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemToObject');
+  late final _cJSON_AddItemToObject = _cJSON_AddItemToObject_ptr.asFunction<
+      void Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemToObjectCS(
     ffi.Pointer<cJSON> object,
@@ -631,11 +678,13 @@
     );
   }
 
-  late final _cJSON_AddItemToObjectCS_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemToObjectCS>>(
-          'cJSON_AddItemToObjectCS');
-  late final _dart_cJSON_AddItemToObjectCS _cJSON_AddItemToObjectCS =
-      _cJSON_AddItemToObjectCS_ptr.asFunction<_dart_cJSON_AddItemToObjectCS>();
+  late final _cJSON_AddItemToObjectCS_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemToObjectCS');
+  late final _cJSON_AddItemToObjectCS = _cJSON_AddItemToObjectCS_ptr.asFunction<
+      void Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemReferenceToArray(
     ffi.Pointer<cJSON> array,
@@ -647,12 +696,12 @@
     );
   }
 
-  late final _cJSON_AddItemReferenceToArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemReferenceToArray>>(
-          'cJSON_AddItemReferenceToArray');
-  late final _dart_cJSON_AddItemReferenceToArray
-      _cJSON_AddItemReferenceToArray = _cJSON_AddItemReferenceToArray_ptr
-          .asFunction<_dart_cJSON_AddItemReferenceToArray>();
+  late final _cJSON_AddItemReferenceToArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemReferenceToArray');
+  late final _cJSON_AddItemReferenceToArray = _cJSON_AddItemReferenceToArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   void cJSON_AddItemReferenceToObject(
     ffi.Pointer<cJSON> object,
@@ -666,12 +715,14 @@
     );
   }
 
-  late final _cJSON_AddItemReferenceToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddItemReferenceToObject>>(
-          'cJSON_AddItemReferenceToObject');
-  late final _dart_cJSON_AddItemReferenceToObject
-      _cJSON_AddItemReferenceToObject = _cJSON_AddItemReferenceToObject_ptr
-          .asFunction<_dart_cJSON_AddItemReferenceToObject>();
+  late final _cJSON_AddItemReferenceToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_AddItemReferenceToObject');
+  late final _cJSON_AddItemReferenceToObject =
+      _cJSON_AddItemReferenceToObject_ptr.asFunction<
+          void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemViaPointer(
     ffi.Pointer<cJSON> parent,
@@ -683,12 +734,14 @@
     );
   }
 
-  late final _cJSON_DetachItemViaPointer_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemViaPointer>>(
-          'cJSON_DetachItemViaPointer');
-  late final _dart_cJSON_DetachItemViaPointer _cJSON_DetachItemViaPointer =
-      _cJSON_DetachItemViaPointer_ptr
-          .asFunction<_dart_cJSON_DetachItemViaPointer>();
+  late final _cJSON_DetachItemViaPointer_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<cJSON>)>>('cJSON_DetachItemViaPointer');
+  late final _cJSON_DetachItemViaPointer =
+      _cJSON_DetachItemViaPointer_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemFromArray(
     ffi.Pointer<cJSON> array,
@@ -700,12 +753,12 @@
     );
   }
 
-  late final _cJSON_DetachItemFromArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemFromArray>>(
-          'cJSON_DetachItemFromArray');
-  late final _dart_cJSON_DetachItemFromArray _cJSON_DetachItemFromArray =
-      _cJSON_DetachItemFromArray_ptr
-          .asFunction<_dart_cJSON_DetachItemFromArray>();
+  late final _cJSON_DetachItemFromArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Int32)>>('cJSON_DetachItemFromArray');
+  late final _cJSON_DetachItemFromArray = _cJSON_DetachItemFromArray_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, int)>();
 
   void cJSON_DeleteItemFromArray(
     ffi.Pointer<cJSON> array,
@@ -717,12 +770,11 @@
     );
   }
 
-  late final _cJSON_DeleteItemFromArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DeleteItemFromArray>>(
-          'cJSON_DeleteItemFromArray');
-  late final _dart_cJSON_DeleteItemFromArray _cJSON_DeleteItemFromArray =
-      _cJSON_DeleteItemFromArray_ptr
-          .asFunction<_dart_cJSON_DeleteItemFromArray>();
+  late final _cJSON_DeleteItemFromArray_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<cJSON>, ffi.Int32)>>(
+      'cJSON_DeleteItemFromArray');
+  late final _cJSON_DeleteItemFromArray = _cJSON_DeleteItemFromArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, int)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemFromObject(
     ffi.Pointer<cJSON> object,
@@ -734,12 +786,14 @@
     );
   }
 
-  late final _cJSON_DetachItemFromObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemFromObject>>(
-          'cJSON_DetachItemFromObject');
-  late final _dart_cJSON_DetachItemFromObject _cJSON_DetachItemFromObject =
-      _cJSON_DetachItemFromObject_ptr
-          .asFunction<_dart_cJSON_DetachItemFromObject>();
+  late final _cJSON_DetachItemFromObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_DetachItemFromObject');
+  late final _cJSON_DetachItemFromObject =
+      _cJSON_DetachItemFromObject_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_DetachItemFromObjectCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -751,13 +805,15 @@
     );
   }
 
-  late final _cJSON_DetachItemFromObjectCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DetachItemFromObjectCaseSensitive>>(
-          'cJSON_DetachItemFromObjectCaseSensitive');
-  late final _dart_cJSON_DetachItemFromObjectCaseSensitive
-      _cJSON_DetachItemFromObjectCaseSensitive =
-      _cJSON_DetachItemFromObjectCaseSensitive_ptr
-          .asFunction<_dart_cJSON_DetachItemFromObjectCaseSensitive>();
+  late final _cJSON_DetachItemFromObjectCaseSensitive_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<cJSON> Function(
+                  ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>>(
+      'cJSON_DetachItemFromObjectCaseSensitive');
+  late final _cJSON_DetachItemFromObjectCaseSensitive =
+      _cJSON_DetachItemFromObjectCaseSensitive_ptr.asFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   void cJSON_DeleteItemFromObject(
     ffi.Pointer<cJSON> object,
@@ -769,12 +825,12 @@
     );
   }
 
-  late final _cJSON_DeleteItemFromObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DeleteItemFromObject>>(
-          'cJSON_DeleteItemFromObject');
-  late final _dart_cJSON_DeleteItemFromObject _cJSON_DeleteItemFromObject =
-      _cJSON_DeleteItemFromObject_ptr
-          .asFunction<_dart_cJSON_DeleteItemFromObject>();
+  late final _cJSON_DeleteItemFromObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_DeleteItemFromObject');
+  late final _cJSON_DeleteItemFromObject = _cJSON_DeleteItemFromObject_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   void cJSON_DeleteItemFromObjectCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -786,13 +842,13 @@
     );
   }
 
-  late final _cJSON_DeleteItemFromObjectCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_DeleteItemFromObjectCaseSensitive>>(
-          'cJSON_DeleteItemFromObjectCaseSensitive');
-  late final _dart_cJSON_DeleteItemFromObjectCaseSensitive
-      _cJSON_DeleteItemFromObjectCaseSensitive =
-      _cJSON_DeleteItemFromObjectCaseSensitive_ptr
-          .asFunction<_dart_cJSON_DeleteItemFromObjectCaseSensitive>();
+  late final _cJSON_DeleteItemFromObjectCaseSensitive_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>>(
+      'cJSON_DeleteItemFromObjectCaseSensitive');
+  late final _cJSON_DeleteItemFromObjectCaseSensitive =
+      _cJSON_DeleteItemFromObjectCaseSensitive_ptr.asFunction<
+          void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   void cJSON_InsertItemInArray(
     ffi.Pointer<cJSON> array,
@@ -806,11 +862,12 @@
     );
   }
 
-  late final _cJSON_InsertItemInArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_InsertItemInArray>>(
-          'cJSON_InsertItemInArray');
-  late final _dart_cJSON_InsertItemInArray _cJSON_InsertItemInArray =
-      _cJSON_InsertItemInArray_ptr.asFunction<_dart_cJSON_InsertItemInArray>();
+  late final _cJSON_InsertItemInArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Int32,
+              ffi.Pointer<cJSON>)>>('cJSON_InsertItemInArray');
+  late final _cJSON_InsertItemInArray = _cJSON_InsertItemInArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, int, ffi.Pointer<cJSON>)>();
 
   int cJSON_ReplaceItemViaPointer(
     ffi.Pointer<cJSON> parent,
@@ -824,12 +881,14 @@
     );
   }
 
-  late final _cJSON_ReplaceItemViaPointer_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemViaPointer>>(
-          'cJSON_ReplaceItemViaPointer');
-  late final _dart_cJSON_ReplaceItemViaPointer _cJSON_ReplaceItemViaPointer =
-      _cJSON_ReplaceItemViaPointer_ptr
-          .asFunction<_dart_cJSON_ReplaceItemViaPointer>();
+  late final _cJSON_ReplaceItemViaPointer_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemViaPointer');
+  late final _cJSON_ReplaceItemViaPointer =
+      _cJSON_ReplaceItemViaPointer_ptr.asFunction<
+          int Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<cJSON>, ffi.Pointer<cJSON>)>();
 
   void cJSON_ReplaceItemInArray(
     ffi.Pointer<cJSON> array,
@@ -843,12 +902,12 @@
     );
   }
 
-  late final _cJSON_ReplaceItemInArray_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemInArray>>(
-          'cJSON_ReplaceItemInArray');
-  late final _dart_cJSON_ReplaceItemInArray _cJSON_ReplaceItemInArray =
-      _cJSON_ReplaceItemInArray_ptr
-          .asFunction<_dart_cJSON_ReplaceItemInArray>();
+  late final _cJSON_ReplaceItemInArray_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Int32,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemInArray');
+  late final _cJSON_ReplaceItemInArray = _cJSON_ReplaceItemInArray_ptr
+      .asFunction<void Function(ffi.Pointer<cJSON>, int, ffi.Pointer<cJSON>)>();
 
   void cJSON_ReplaceItemInObject(
     ffi.Pointer<cJSON> object,
@@ -862,12 +921,14 @@
     );
   }
 
-  late final _cJSON_ReplaceItemInObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemInObject>>(
-          'cJSON_ReplaceItemInObject');
-  late final _dart_cJSON_ReplaceItemInObject _cJSON_ReplaceItemInObject =
-      _cJSON_ReplaceItemInObject_ptr
-          .asFunction<_dart_cJSON_ReplaceItemInObject>();
+  late final _cJSON_ReplaceItemInObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemInObject');
+  late final _cJSON_ReplaceItemInObject =
+      _cJSON_ReplaceItemInObject_ptr.asFunction<
+          void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   void cJSON_ReplaceItemInObjectCaseSensitive(
     ffi.Pointer<cJSON> object,
@@ -881,13 +942,14 @@
     );
   }
 
-  late final _cJSON_ReplaceItemInObjectCaseSensitive_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_ReplaceItemInObjectCaseSensitive>>(
-          'cJSON_ReplaceItemInObjectCaseSensitive');
-  late final _dart_cJSON_ReplaceItemInObjectCaseSensitive
-      _cJSON_ReplaceItemInObjectCaseSensitive =
-      _cJSON_ReplaceItemInObjectCaseSensitive_ptr
-          .asFunction<_dart_cJSON_ReplaceItemInObjectCaseSensitive>();
+  late final _cJSON_ReplaceItemInObjectCaseSensitive_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<cJSON>)>>('cJSON_ReplaceItemInObjectCaseSensitive');
+  late final _cJSON_ReplaceItemInObjectCaseSensitive =
+      _cJSON_ReplaceItemInObjectCaseSensitive_ptr.asFunction<
+          void Function(
+              ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<cJSON>)>();
 
   ffi.Pointer<cJSON> cJSON_Duplicate(
     ffi.Pointer<cJSON> item,
@@ -899,10 +961,12 @@
     );
   }
 
-  late final _cJSON_Duplicate_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Duplicate>>('cJSON_Duplicate');
-  late final _dart_cJSON_Duplicate _cJSON_Duplicate =
-      _cJSON_Duplicate_ptr.asFunction<_dart_cJSON_Duplicate>();
+  late final _cJSON_Duplicate_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(
+              ffi.Pointer<cJSON>, cJSON_bool)>>('cJSON_Duplicate');
+  late final _cJSON_Duplicate = _cJSON_Duplicate_ptr
+      .asFunction<ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, int)>();
 
   int cJSON_Compare(
     ffi.Pointer<cJSON> a,
@@ -916,10 +980,12 @@
     );
   }
 
-  late final _cJSON_Compare_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Compare>>('cJSON_Compare');
-  late final _dart_cJSON_Compare _cJSON_Compare =
-      _cJSON_Compare_ptr.asFunction<_dart_cJSON_Compare>();
+  late final _cJSON_Compare_ptr = _lookup<
+      ffi.NativeFunction<
+          cJSON_bool Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>,
+              cJSON_bool)>>('cJSON_Compare');
+  late final _cJSON_Compare = _cJSON_Compare_ptr
+      .asFunction<int Function(ffi.Pointer<cJSON>, ffi.Pointer<cJSON>, int)>();
 
   void cJSON_Minify(
     ffi.Pointer<ffi.Int8> json,
@@ -930,9 +996,10 @@
   }
 
   late final _cJSON_Minify_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_Minify>>('cJSON_Minify');
-  late final _dart_cJSON_Minify _cJSON_Minify =
-      _cJSON_Minify_ptr.asFunction<_dart_cJSON_Minify>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Int8>)>>(
+          'cJSON_Minify');
+  late final _cJSON_Minify =
+      _cJSON_Minify_ptr.asFunction<void Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddNullToObject(
     ffi.Pointer<cJSON> object,
@@ -944,11 +1011,12 @@
     );
   }
 
-  late final _cJSON_AddNullToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddNullToObject>>(
-          'cJSON_AddNullToObject');
-  late final _dart_cJSON_AddNullToObject _cJSON_AddNullToObject =
-      _cJSON_AddNullToObject_ptr.asFunction<_dart_cJSON_AddNullToObject>();
+  late final _cJSON_AddNullToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddNullToObject');
+  late final _cJSON_AddNullToObject = _cJSON_AddNullToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddTrueToObject(
     ffi.Pointer<cJSON> object,
@@ -960,11 +1028,12 @@
     );
   }
 
-  late final _cJSON_AddTrueToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddTrueToObject>>(
-          'cJSON_AddTrueToObject');
-  late final _dart_cJSON_AddTrueToObject _cJSON_AddTrueToObject =
-      _cJSON_AddTrueToObject_ptr.asFunction<_dart_cJSON_AddTrueToObject>();
+  late final _cJSON_AddTrueToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddTrueToObject');
+  late final _cJSON_AddTrueToObject = _cJSON_AddTrueToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddFalseToObject(
     ffi.Pointer<cJSON> object,
@@ -976,11 +1045,12 @@
     );
   }
 
-  late final _cJSON_AddFalseToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddFalseToObject>>(
-          'cJSON_AddFalseToObject');
-  late final _dart_cJSON_AddFalseToObject _cJSON_AddFalseToObject =
-      _cJSON_AddFalseToObject_ptr.asFunction<_dart_cJSON_AddFalseToObject>();
+  late final _cJSON_AddFalseToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddFalseToObject');
+  late final _cJSON_AddFalseToObject = _cJSON_AddFalseToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddBoolToObject(
     ffi.Pointer<cJSON> object,
@@ -994,11 +1064,13 @@
     );
   }
 
-  late final _cJSON_AddBoolToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddBoolToObject>>(
-          'cJSON_AddBoolToObject');
-  late final _dart_cJSON_AddBoolToObject _cJSON_AddBoolToObject =
-      _cJSON_AddBoolToObject_ptr.asFunction<_dart_cJSON_AddBoolToObject>();
+  late final _cJSON_AddBoolToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              cJSON_bool)>>('cJSON_AddBoolToObject');
+  late final _cJSON_AddBoolToObject = _cJSON_AddBoolToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, int)>();
 
   ffi.Pointer<cJSON> cJSON_AddNumberToObject(
     ffi.Pointer<cJSON> object,
@@ -1012,11 +1084,13 @@
     );
   }
 
-  late final _cJSON_AddNumberToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddNumberToObject>>(
-          'cJSON_AddNumberToObject');
-  late final _dart_cJSON_AddNumberToObject _cJSON_AddNumberToObject =
-      _cJSON_AddNumberToObject_ptr.asFunction<_dart_cJSON_AddNumberToObject>();
+  late final _cJSON_AddNumberToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Double)>>('cJSON_AddNumberToObject');
+  late final _cJSON_AddNumberToObject = _cJSON_AddNumberToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, double)>();
 
   ffi.Pointer<cJSON> cJSON_AddStringToObject(
     ffi.Pointer<cJSON> object,
@@ -1030,11 +1104,13 @@
     );
   }
 
-  late final _cJSON_AddStringToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddStringToObject>>(
-          'cJSON_AddStringToObject');
-  late final _dart_cJSON_AddStringToObject _cJSON_AddStringToObject =
-      _cJSON_AddStringToObject_ptr.asFunction<_dart_cJSON_AddStringToObject>();
+  late final _cJSON_AddStringToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddStringToObject');
+  late final _cJSON_AddStringToObject = _cJSON_AddStringToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddRawToObject(
     ffi.Pointer<cJSON> object,
@@ -1048,11 +1124,13 @@
     );
   }
 
-  late final _cJSON_AddRawToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddRawToObject>>(
-          'cJSON_AddRawToObject');
-  late final _dart_cJSON_AddRawToObject _cJSON_AddRawToObject =
-      _cJSON_AddRawToObject_ptr.asFunction<_dart_cJSON_AddRawToObject>();
+  late final _cJSON_AddRawToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddRawToObject');
+  late final _cJSON_AddRawToObject = _cJSON_AddRawToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(
+          ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddObjectToObject(
     ffi.Pointer<cJSON> object,
@@ -1064,11 +1142,12 @@
     );
   }
 
-  late final _cJSON_AddObjectToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddObjectToObject>>(
-          'cJSON_AddObjectToObject');
-  late final _dart_cJSON_AddObjectToObject _cJSON_AddObjectToObject =
-      _cJSON_AddObjectToObject_ptr.asFunction<_dart_cJSON_AddObjectToObject>();
+  late final _cJSON_AddObjectToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddObjectToObject');
+  late final _cJSON_AddObjectToObject = _cJSON_AddObjectToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<cJSON> cJSON_AddArrayToObject(
     ffi.Pointer<cJSON> object,
@@ -1080,11 +1159,12 @@
     );
   }
 
-  late final _cJSON_AddArrayToObject_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_AddArrayToObject>>(
-          'cJSON_AddArrayToObject');
-  late final _dart_cJSON_AddArrayToObject _cJSON_AddArrayToObject =
-      _cJSON_AddArrayToObject_ptr.asFunction<_dart_cJSON_AddArrayToObject>();
+  late final _cJSON_AddArrayToObject_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>,
+              ffi.Pointer<ffi.Int8>)>>('cJSON_AddArrayToObject');
+  late final _cJSON_AddArrayToObject = _cJSON_AddArrayToObject_ptr.asFunction<
+      ffi.Pointer<cJSON> Function(ffi.Pointer<cJSON>, ffi.Pointer<ffi.Int8>)>();
 
   double cJSON_SetNumberHelper(
     ffi.Pointer<cJSON> object,
@@ -1096,11 +1176,12 @@
     );
   }
 
-  late final _cJSON_SetNumberHelper_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_SetNumberHelper>>(
-          'cJSON_SetNumberHelper');
-  late final _dart_cJSON_SetNumberHelper _cJSON_SetNumberHelper =
-      _cJSON_SetNumberHelper_ptr.asFunction<_dart_cJSON_SetNumberHelper>();
+  late final _cJSON_SetNumberHelper_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Double Function(
+              ffi.Pointer<cJSON>, ffi.Double)>>('cJSON_SetNumberHelper');
+  late final _cJSON_SetNumberHelper = _cJSON_SetNumberHelper_ptr
+      .asFunction<double Function(ffi.Pointer<cJSON>, double)>();
 
   ffi.Pointer<ffi.Void> cJSON_malloc(
     int size,
@@ -1111,9 +1192,10 @@
   }
 
   late final _cJSON_malloc_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_malloc>>('cJSON_malloc');
-  late final _dart_cJSON_malloc _cJSON_malloc =
-      _cJSON_malloc_ptr.asFunction<_dart_cJSON_malloc>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.IntPtr)>>(
+          'cJSON_malloc');
+  late final _cJSON_malloc =
+      _cJSON_malloc_ptr.asFunction<ffi.Pointer<ffi.Void> Function(int)>();
 
   void cJSON_free(
     ffi.Pointer<ffi.Void> object,
@@ -1124,9 +1206,10 @@
   }
 
   late final _cJSON_free_ptr =
-      _lookup<ffi.NativeFunction<_c_cJSON_free>>('cJSON_free');
-  late final _dart_cJSON_free _cJSON_free =
-      _cJSON_free_ptr.asFunction<_dart_cJSON_free>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
+          'cJSON_free');
+  late final _cJSON_free =
+      _cJSON_free_ptr.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
 }
 
 class cJSON extends ffi.Struct {
@@ -1151,11 +1234,16 @@
 }
 
 class cJSON_Hooks extends ffi.Struct {
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_1>> malloc_fn;
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.IntPtr)>> malloc_fn;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_2>> free_fn;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      free_fn;
 }
 
+typedef cJSON_bool = ffi.Int32;
+
 const int CJSON_VERSION_MAJOR = 1;
 
 const int CJSON_VERSION_MINOR = 7;
@@ -1187,691 +1275,3 @@
 const int CJSON_NESTING_LIMIT = 1000;
 
 const double CJSON_DOUBLE_PRECISION = 1e-16;
-
-typedef _c_cJSON_Version = ffi.Pointer<ffi.Int8> Function();
-
-typedef _dart_cJSON_Version = ffi.Pointer<ffi.Int8> Function();
-
-typedef _c_cJSON_InitHooks = ffi.Void Function(
-  ffi.Pointer<cJSON_Hooks> hooks,
-);
-
-typedef _dart_cJSON_InitHooks = void Function(
-  ffi.Pointer<cJSON_Hooks> hooks,
-);
-
-typedef _c_cJSON_Parse = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-);
-
-typedef _dart_cJSON_Parse = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-);
-
-typedef _c_cJSON_ParseWithOpts = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> return_parse_end,
-  ffi.Int32 require_null_terminated,
-);
-
-typedef _dart_cJSON_ParseWithOpts = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> value,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> return_parse_end,
-  int require_null_terminated,
-);
-
-typedef _c_cJSON_Print = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_Print = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_PrintUnformatted = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_PrintUnformatted = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_PrintBuffered = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Int32 prebuffer,
-  ffi.Int32 fmt,
-);
-
-typedef _dart_cJSON_PrintBuffered = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-  int prebuffer,
-  int fmt,
-);
-
-typedef _c_cJSON_PrintPreallocated = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<ffi.Int8> buffer,
-  ffi.Int32 length,
-  ffi.Int32 format,
-);
-
-typedef _dart_cJSON_PrintPreallocated = int Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<ffi.Int8> buffer,
-  int length,
-  int format,
-);
-
-typedef _c_cJSON_Delete = ffi.Void Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_Delete = void Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_GetArraySize = ffi.Int32 Function(
-  ffi.Pointer<cJSON> array,
-);
-
-typedef _dart_cJSON_GetArraySize = int Function(
-  ffi.Pointer<cJSON> array,
-);
-
-typedef _c_cJSON_GetArrayItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 index,
-);
-
-typedef _dart_cJSON_GetArrayItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  int index,
-);
-
-typedef _c_cJSON_GetObjectItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_GetObjectItem = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_GetObjectItemCaseSensitive = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_GetObjectItemCaseSensitive = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_HasObjectItem = ffi.Int32 Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_HasObjectItem = int Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_GetErrorPtr = ffi.Pointer<ffi.Int8> Function();
-
-typedef _dart_cJSON_GetErrorPtr = ffi.Pointer<ffi.Int8> Function();
-
-typedef _c_cJSON_GetStringValue = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_GetStringValue = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsInvalid = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsInvalid = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsFalse = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsFalse = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsTrue = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsTrue = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsBool = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsBool = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsNull = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsNull = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsNumber = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsNumber = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsString = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsString = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsArray = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsArray = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsObject = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsObject = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_IsRaw = ffi.Int32 Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_IsRaw = int Function(
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_CreateNull = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateNull = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateTrue = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateTrue = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateFalse = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateFalse = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateBool = ffi.Pointer<cJSON> Function(
-  ffi.Int32 boolean,
-);
-
-typedef _dart_cJSON_CreateBool = ffi.Pointer<cJSON> Function(
-  int boolean,
-);
-
-typedef _c_cJSON_CreateNumber = ffi.Pointer<cJSON> Function(
-  ffi.Double num,
-);
-
-typedef _dart_cJSON_CreateNumber = ffi.Pointer<cJSON> Function(
-  double num,
-);
-
-typedef _c_cJSON_CreateString = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_CreateString = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_CreateRaw = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _dart_cJSON_CreateRaw = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _c_cJSON_CreateArray = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateArray = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateObject = ffi.Pointer<cJSON> Function();
-
-typedef _dart_cJSON_CreateObject = ffi.Pointer<cJSON> Function();
-
-typedef _c_cJSON_CreateStringReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_CreateStringReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_CreateObjectReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _dart_cJSON_CreateObjectReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _c_cJSON_CreateArrayReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _dart_cJSON_CreateArrayReference = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> child,
-);
-
-typedef _c_cJSON_CreateIntArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int32> numbers,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateIntArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Int32> numbers,
-  int count,
-);
-
-typedef _c_cJSON_CreateFloatArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Float> numbers,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateFloatArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Float> numbers,
-  int count,
-);
-
-typedef _c_cJSON_CreateDoubleArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Double> numbers,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateDoubleArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Double> numbers,
-  int count,
-);
-
-typedef _c_cJSON_CreateStringArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
-  ffi.Int32 count,
-);
-
-typedef _dart_cJSON_CreateStringArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
-  int count,
-);
-
-typedef _c_cJSON_AddItemToArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemToArray = void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemToObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemToObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemToObjectCS = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemToObjectCS = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemReferenceToArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemReferenceToArray = void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_AddItemReferenceToObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_AddItemReferenceToObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_DetachItemViaPointer = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _dart_cJSON_DetachItemViaPointer = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-);
-
-typedef _c_cJSON_DetachItemFromArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-);
-
-typedef _dart_cJSON_DetachItemFromArray = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-);
-
-typedef _c_cJSON_DeleteItemFromArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-);
-
-typedef _dart_cJSON_DeleteItemFromArray = void Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-);
-
-typedef _c_cJSON_DetachItemFromObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DetachItemFromObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_DetachItemFromObjectCaseSensitive = ffi.Pointer<cJSON>
-    Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DetachItemFromObjectCaseSensitive = ffi.Pointer<cJSON>
-    Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_DeleteItemFromObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DeleteItemFromObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_DeleteItemFromObjectCaseSensitive = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_DeleteItemFromObjectCaseSensitive = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_InsertItemInArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_InsertItemInArray = void Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_ReplaceItemViaPointer = ffi.Int32 Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<cJSON> replacement,
-);
-
-typedef _dart_cJSON_ReplaceItemViaPointer = int Function(
-  ffi.Pointer<cJSON> parent,
-  ffi.Pointer<cJSON> item,
-  ffi.Pointer<cJSON> replacement,
-);
-
-typedef _c_cJSON_ReplaceItemInArray = ffi.Void Function(
-  ffi.Pointer<cJSON> array,
-  ffi.Int32 which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_ReplaceItemInArray = void Function(
-  ffi.Pointer<cJSON> array,
-  int which,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_ReplaceItemInObject = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_ReplaceItemInObject = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_ReplaceItemInObjectCaseSensitive = ffi.Void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _dart_cJSON_ReplaceItemInObjectCaseSensitive = void Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> string,
-  ffi.Pointer<cJSON> newitem,
-);
-
-typedef _c_cJSON_Duplicate = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> item,
-  ffi.Int32 recurse,
-);
-
-typedef _dart_cJSON_Duplicate = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> item,
-  int recurse,
-);
-
-typedef _c_cJSON_Compare = ffi.Int32 Function(
-  ffi.Pointer<cJSON> a,
-  ffi.Pointer<cJSON> b,
-  ffi.Int32 case_sensitive,
-);
-
-typedef _dart_cJSON_Compare = int Function(
-  ffi.Pointer<cJSON> a,
-  ffi.Pointer<cJSON> b,
-  int case_sensitive,
-);
-
-typedef _c_cJSON_Minify = ffi.Void Function(
-  ffi.Pointer<ffi.Int8> json,
-);
-
-typedef _dart_cJSON_Minify = void Function(
-  ffi.Pointer<ffi.Int8> json,
-);
-
-typedef _c_cJSON_AddNullToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddNullToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddTrueToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddTrueToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddFalseToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddFalseToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddBoolToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Int32 boolean,
-);
-
-typedef _dart_cJSON_AddBoolToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  int boolean,
-);
-
-typedef _c_cJSON_AddNumberToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Double number,
-);
-
-typedef _dart_cJSON_AddNumberToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  double number,
-);
-
-typedef _c_cJSON_AddStringToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _dart_cJSON_AddStringToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> string,
-);
-
-typedef _c_cJSON_AddRawToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _dart_cJSON_AddRawToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Pointer<ffi.Int8> raw,
-);
-
-typedef _c_cJSON_AddObjectToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddObjectToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_AddArrayToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_cJSON_AddArrayToObject = ffi.Pointer<cJSON> Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_cJSON_SetNumberHelper = ffi.Double Function(
-  ffi.Pointer<cJSON> object,
-  ffi.Double number,
-);
-
-typedef _dart_cJSON_SetNumberHelper = double Function(
-  ffi.Pointer<cJSON> object,
-  double number,
-);
-
-typedef _c_cJSON_malloc = ffi.Pointer<ffi.Void> Function(
-  ffi.Uint64 size,
-);
-
-typedef _dart_cJSON_malloc = ffi.Pointer<ffi.Void> Function(
-  int size,
-);
-
-typedef _c_cJSON_free = ffi.Void Function(
-  ffi.Pointer<ffi.Void> object,
-);
-
-typedef _dart_cJSON_free = void Function(
-  ffi.Pointer<ffi.Void> object,
-);
-
-typedef _typedefC_1 = ffi.Pointer<ffi.Void> Function(
-  ffi.Uint64,
-);
-
-typedef _typedefC_2 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
diff --git a/test/large_integration_tests/_expected_libclang_bindings.dart b/test/large_integration_tests/_expected_libclang_bindings.dart
index be68fb5..caf2392 100644
--- a/test/large_integration_tests/_expected_libclang_bindings.dart
+++ b/test/large_integration_tests/_expected_libclang_bindings.dart
@@ -28,9 +28,10 @@
   }
 
   late final _clang_getCString_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCString>>('clang_getCString');
-  late final _dart_clang_getCString _clang_getCString =
-      _clang_getCString_ptr.asFunction<_dart_clang_getCString>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(CXString)>>(
+          'clang_getCString');
+  late final _clang_getCString = _clang_getCString_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(CXString)>();
 
   /// Free the given string.
   void clang_disposeString(
@@ -42,10 +43,10 @@
   }
 
   late final _clang_disposeString_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeString>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXString)>>(
           'clang_disposeString');
-  late final _dart_clang_disposeString _clang_disposeString =
-      _clang_disposeString_ptr.asFunction<_dart_clang_disposeString>();
+  late final _clang_disposeString =
+      _clang_disposeString_ptr.asFunction<void Function(CXString)>();
 
   /// Free the given string set.
   void clang_disposeStringSet(
@@ -57,10 +58,10 @@
   }
 
   late final _clang_disposeStringSet_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeStringSet>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<CXStringSet>)>>(
           'clang_disposeStringSet');
-  late final _dart_clang_disposeStringSet _clang_disposeStringSet =
-      _clang_disposeStringSet_ptr.asFunction<_dart_clang_disposeStringSet>();
+  late final _clang_disposeStringSet = _clang_disposeStringSet_ptr
+      .asFunction<void Function(ffi.Pointer<CXStringSet>)>();
 
   /// Return the timestamp for use with Clang's -fbuild-session-timestamp=
   /// option.
@@ -69,15 +70,14 @@
   }
 
   late final _clang_getBuildSessionTimestamp_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getBuildSessionTimestamp>>(
+      _lookup<ffi.NativeFunction<ffi.Uint64 Function()>>(
           'clang_getBuildSessionTimestamp');
-  late final _dart_clang_getBuildSessionTimestamp
-      _clang_getBuildSessionTimestamp = _clang_getBuildSessionTimestamp_ptr
-          .asFunction<_dart_clang_getBuildSessionTimestamp>();
+  late final _clang_getBuildSessionTimestamp =
+      _clang_getBuildSessionTimestamp_ptr.asFunction<int Function()>();
 
   /// Create a CXVirtualFileOverlay object. Must be disposed with
   /// clang_VirtualFileOverlay_dispose().
-  ffi.Pointer<CXVirtualFileOverlayImpl> clang_VirtualFileOverlay_create(
+  CXVirtualFileOverlay clang_VirtualFileOverlay_create(
     int options,
   ) {
     return _clang_VirtualFileOverlay_create(
@@ -86,16 +86,16 @@
   }
 
   late final _clang_VirtualFileOverlay_create_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_VirtualFileOverlay_create>>(
+      _lookup<ffi.NativeFunction<CXVirtualFileOverlay Function(ffi.Uint32)>>(
           'clang_VirtualFileOverlay_create');
-  late final _dart_clang_VirtualFileOverlay_create
-      _clang_VirtualFileOverlay_create = _clang_VirtualFileOverlay_create_ptr
-          .asFunction<_dart_clang_VirtualFileOverlay_create>();
+  late final _clang_VirtualFileOverlay_create =
+      _clang_VirtualFileOverlay_create_ptr
+          .asFunction<CXVirtualFileOverlay Function(int)>();
 
   /// Map an absolute virtual file path to an absolute real one. The virtual
   /// path must be canonicalized (not contain "."/"..").
   int clang_VirtualFileOverlay_addFileMapping(
-    ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
+    CXVirtualFileOverlay arg0,
     ffi.Pointer<ffi.Int8> virtualPath,
     ffi.Pointer<ffi.Int8> realPath,
   ) {
@@ -106,19 +106,21 @@
     );
   }
 
-  late final _clang_VirtualFileOverlay_addFileMapping_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_VirtualFileOverlay_addFileMapping>>(
-          'clang_VirtualFileOverlay_addFileMapping');
-  late final _dart_clang_VirtualFileOverlay_addFileMapping
-      _clang_VirtualFileOverlay_addFileMapping =
-      _clang_VirtualFileOverlay_addFileMapping_ptr
-          .asFunction<_dart_clang_VirtualFileOverlay_addFileMapping>();
+  late final _clang_VirtualFileOverlay_addFileMapping_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(CXVirtualFileOverlay, ffi.Pointer<ffi.Int8>,
+                  ffi.Pointer<ffi.Int8>)>>(
+      'clang_VirtualFileOverlay_addFileMapping');
+  late final _clang_VirtualFileOverlay_addFileMapping =
+      _clang_VirtualFileOverlay_addFileMapping_ptr.asFunction<
+          int Function(CXVirtualFileOverlay, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>();
 
   /// Set the case sensitivity for the CXVirtualFileOverlay object. The
   /// CXVirtualFileOverlay object is case-sensitive by default, this option can
   /// be used to override the default.
   int clang_VirtualFileOverlay_setCaseSensitivity(
-    ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
+    CXVirtualFileOverlay arg0,
     int caseSensitive,
   ) {
     return _clang_VirtualFileOverlay_setCaseSensitivity(
@@ -128,16 +130,16 @@
   }
 
   late final _clang_VirtualFileOverlay_setCaseSensitivity_ptr = _lookup<
-          ffi.NativeFunction<_c_clang_VirtualFileOverlay_setCaseSensitivity>>(
-      'clang_VirtualFileOverlay_setCaseSensitivity');
-  late final _dart_clang_VirtualFileOverlay_setCaseSensitivity
-      _clang_VirtualFileOverlay_setCaseSensitivity =
+      ffi.NativeFunction<
+          ffi.Int32 Function(CXVirtualFileOverlay,
+              ffi.Int32)>>('clang_VirtualFileOverlay_setCaseSensitivity');
+  late final _clang_VirtualFileOverlay_setCaseSensitivity =
       _clang_VirtualFileOverlay_setCaseSensitivity_ptr
-          .asFunction<_dart_clang_VirtualFileOverlay_setCaseSensitivity>();
+          .asFunction<int Function(CXVirtualFileOverlay, int)>();
 
   /// Write out the CXVirtualFileOverlay object to a char buffer.
   int clang_VirtualFileOverlay_writeToBuffer(
-    ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
+    CXVirtualFileOverlay arg0,
     int options,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> out_buffer_ptr,
     ffi.Pointer<ffi.Uint32> out_buffer_size,
@@ -150,13 +152,18 @@
     );
   }
 
-  late final _clang_VirtualFileOverlay_writeToBuffer_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_VirtualFileOverlay_writeToBuffer>>(
-          'clang_VirtualFileOverlay_writeToBuffer');
-  late final _dart_clang_VirtualFileOverlay_writeToBuffer
-      _clang_VirtualFileOverlay_writeToBuffer =
-      _clang_VirtualFileOverlay_writeToBuffer_ptr
-          .asFunction<_dart_clang_VirtualFileOverlay_writeToBuffer>();
+  late final _clang_VirtualFileOverlay_writeToBuffer_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  CXVirtualFileOverlay,
+                  ffi.Uint32,
+                  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                  ffi.Pointer<ffi.Uint32>)>>(
+      'clang_VirtualFileOverlay_writeToBuffer');
+  late final _clang_VirtualFileOverlay_writeToBuffer =
+      _clang_VirtualFileOverlay_writeToBuffer_ptr.asFunction<
+          int Function(CXVirtualFileOverlay, int,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>, ffi.Pointer<ffi.Uint32>)>();
 
   /// free memory allocated by libclang, such as the buffer returned by
   /// CXVirtualFileOverlay() or clang_ModuleMapDescriptor_writeToBuffer().
@@ -169,13 +176,14 @@
   }
 
   late final _clang_free_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_free>>('clang_free');
-  late final _dart_clang_free _clang_free =
-      _clang_free_ptr.asFunction<_dart_clang_free>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
+          'clang_free');
+  late final _clang_free =
+      _clang_free_ptr.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
 
   /// Dispose a CXVirtualFileOverlay object.
   void clang_VirtualFileOverlay_dispose(
-    ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
+    CXVirtualFileOverlay arg0,
   ) {
     return _clang_VirtualFileOverlay_dispose(
       arg0,
@@ -183,15 +191,15 @@
   }
 
   late final _clang_VirtualFileOverlay_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_VirtualFileOverlay_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXVirtualFileOverlay)>>(
           'clang_VirtualFileOverlay_dispose');
-  late final _dart_clang_VirtualFileOverlay_dispose
-      _clang_VirtualFileOverlay_dispose = _clang_VirtualFileOverlay_dispose_ptr
-          .asFunction<_dart_clang_VirtualFileOverlay_dispose>();
+  late final _clang_VirtualFileOverlay_dispose =
+      _clang_VirtualFileOverlay_dispose_ptr
+          .asFunction<void Function(CXVirtualFileOverlay)>();
 
   /// Create a CXModuleMapDescriptor object. Must be disposed with
   /// clang_ModuleMapDescriptor_dispose().
-  ffi.Pointer<CXModuleMapDescriptorImpl> clang_ModuleMapDescriptor_create(
+  CXModuleMapDescriptor clang_ModuleMapDescriptor_create(
     int options,
   ) {
     return _clang_ModuleMapDescriptor_create(
@@ -200,15 +208,15 @@
   }
 
   late final _clang_ModuleMapDescriptor_create_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_ModuleMapDescriptor_create>>(
+      _lookup<ffi.NativeFunction<CXModuleMapDescriptor Function(ffi.Uint32)>>(
           'clang_ModuleMapDescriptor_create');
-  late final _dart_clang_ModuleMapDescriptor_create
-      _clang_ModuleMapDescriptor_create = _clang_ModuleMapDescriptor_create_ptr
-          .asFunction<_dart_clang_ModuleMapDescriptor_create>();
+  late final _clang_ModuleMapDescriptor_create =
+      _clang_ModuleMapDescriptor_create_ptr
+          .asFunction<CXModuleMapDescriptor Function(int)>();
 
   /// Sets the framework module name that the module.map describes.
   int clang_ModuleMapDescriptor_setFrameworkModuleName(
-    ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
+    CXModuleMapDescriptor arg0,
     ffi.Pointer<ffi.Int8> name,
   ) {
     return _clang_ModuleMapDescriptor_setFrameworkModuleName(
@@ -219,16 +227,16 @@
 
   late final _clang_ModuleMapDescriptor_setFrameworkModuleName_ptr = _lookup<
           ffi.NativeFunction<
-              _c_clang_ModuleMapDescriptor_setFrameworkModuleName>>(
+              ffi.Int32 Function(
+                  CXModuleMapDescriptor, ffi.Pointer<ffi.Int8>)>>(
       'clang_ModuleMapDescriptor_setFrameworkModuleName');
-  late final _dart_clang_ModuleMapDescriptor_setFrameworkModuleName
-      _clang_ModuleMapDescriptor_setFrameworkModuleName =
-      _clang_ModuleMapDescriptor_setFrameworkModuleName_ptr
-          .asFunction<_dart_clang_ModuleMapDescriptor_setFrameworkModuleName>();
+  late final _clang_ModuleMapDescriptor_setFrameworkModuleName =
+      _clang_ModuleMapDescriptor_setFrameworkModuleName_ptr.asFunction<
+          int Function(CXModuleMapDescriptor, ffi.Pointer<ffi.Int8>)>();
 
   /// Sets the umbrealla header name that the module.map describes.
   int clang_ModuleMapDescriptor_setUmbrellaHeader(
-    ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
+    CXModuleMapDescriptor arg0,
     ffi.Pointer<ffi.Int8> name,
   ) {
     return _clang_ModuleMapDescriptor_setUmbrellaHeader(
@@ -238,16 +246,17 @@
   }
 
   late final _clang_ModuleMapDescriptor_setUmbrellaHeader_ptr = _lookup<
-          ffi.NativeFunction<_c_clang_ModuleMapDescriptor_setUmbrellaHeader>>(
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  CXModuleMapDescriptor, ffi.Pointer<ffi.Int8>)>>(
       'clang_ModuleMapDescriptor_setUmbrellaHeader');
-  late final _dart_clang_ModuleMapDescriptor_setUmbrellaHeader
-      _clang_ModuleMapDescriptor_setUmbrellaHeader =
-      _clang_ModuleMapDescriptor_setUmbrellaHeader_ptr
-          .asFunction<_dart_clang_ModuleMapDescriptor_setUmbrellaHeader>();
+  late final _clang_ModuleMapDescriptor_setUmbrellaHeader =
+      _clang_ModuleMapDescriptor_setUmbrellaHeader_ptr.asFunction<
+          int Function(CXModuleMapDescriptor, ffi.Pointer<ffi.Int8>)>();
 
   /// Write out the CXModuleMapDescriptor object to a char buffer.
   int clang_ModuleMapDescriptor_writeToBuffer(
-    ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
+    CXModuleMapDescriptor arg0,
     int options,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> out_buffer_ptr,
     ffi.Pointer<ffi.Uint32> out_buffer_size,
@@ -260,17 +269,22 @@
     );
   }
 
-  late final _clang_ModuleMapDescriptor_writeToBuffer_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_ModuleMapDescriptor_writeToBuffer>>(
-          'clang_ModuleMapDescriptor_writeToBuffer');
-  late final _dart_clang_ModuleMapDescriptor_writeToBuffer
-      _clang_ModuleMapDescriptor_writeToBuffer =
-      _clang_ModuleMapDescriptor_writeToBuffer_ptr
-          .asFunction<_dart_clang_ModuleMapDescriptor_writeToBuffer>();
+  late final _clang_ModuleMapDescriptor_writeToBuffer_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  CXModuleMapDescriptor,
+                  ffi.Uint32,
+                  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                  ffi.Pointer<ffi.Uint32>)>>(
+      'clang_ModuleMapDescriptor_writeToBuffer');
+  late final _clang_ModuleMapDescriptor_writeToBuffer =
+      _clang_ModuleMapDescriptor_writeToBuffer_ptr.asFunction<
+          int Function(CXModuleMapDescriptor, int,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>, ffi.Pointer<ffi.Uint32>)>();
 
   /// Dispose a CXModuleMapDescriptor object.
   void clang_ModuleMapDescriptor_dispose(
-    ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
+    CXModuleMapDescriptor arg0,
   ) {
     return _clang_ModuleMapDescriptor_dispose(
       arg0,
@@ -278,15 +292,14 @@
   }
 
   late final _clang_ModuleMapDescriptor_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_ModuleMapDescriptor_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXModuleMapDescriptor)>>(
           'clang_ModuleMapDescriptor_dispose');
-  late final _dart_clang_ModuleMapDescriptor_dispose
-      _clang_ModuleMapDescriptor_dispose =
+  late final _clang_ModuleMapDescriptor_dispose =
       _clang_ModuleMapDescriptor_dispose_ptr
-          .asFunction<_dart_clang_ModuleMapDescriptor_dispose>();
+          .asFunction<void Function(CXModuleMapDescriptor)>();
 
   /// Provides a shared context for creating translation units.
-  ffi.Pointer<ffi.Void> clang_createIndex(
+  CXIndex clang_createIndex(
     int excludeDeclarationsFromPCH,
     int displayDiagnostics,
   ) {
@@ -297,13 +310,14 @@
   }
 
   late final _clang_createIndex_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_createIndex>>('clang_createIndex');
-  late final _dart_clang_createIndex _clang_createIndex =
-      _clang_createIndex_ptr.asFunction<_dart_clang_createIndex>();
+      _lookup<ffi.NativeFunction<CXIndex Function(ffi.Int32, ffi.Int32)>>(
+          'clang_createIndex');
+  late final _clang_createIndex =
+      _clang_createIndex_ptr.asFunction<CXIndex Function(int, int)>();
 
   /// Destroy the given index.
   void clang_disposeIndex(
-    ffi.Pointer<ffi.Void> index,
+    CXIndex index,
   ) {
     return _clang_disposeIndex(
       index,
@@ -311,13 +325,14 @@
   }
 
   late final _clang_disposeIndex_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeIndex>>('clang_disposeIndex');
-  late final _dart_clang_disposeIndex _clang_disposeIndex =
-      _clang_disposeIndex_ptr.asFunction<_dart_clang_disposeIndex>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXIndex)>>(
+          'clang_disposeIndex');
+  late final _clang_disposeIndex =
+      _clang_disposeIndex_ptr.asFunction<void Function(CXIndex)>();
 
   /// Sets general options associated with a CXIndex.
   void clang_CXIndex_setGlobalOptions(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndex arg0,
     int options,
   ) {
     return _clang_CXIndex_setGlobalOptions(
@@ -327,15 +342,15 @@
   }
 
   late final _clang_CXIndex_setGlobalOptions_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXIndex_setGlobalOptions>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXIndex, ffi.Uint32)>>(
           'clang_CXIndex_setGlobalOptions');
-  late final _dart_clang_CXIndex_setGlobalOptions
-      _clang_CXIndex_setGlobalOptions = _clang_CXIndex_setGlobalOptions_ptr
-          .asFunction<_dart_clang_CXIndex_setGlobalOptions>();
+  late final _clang_CXIndex_setGlobalOptions =
+      _clang_CXIndex_setGlobalOptions_ptr
+          .asFunction<void Function(CXIndex, int)>();
 
   /// Gets the general options associated with a CXIndex.
   int clang_CXIndex_getGlobalOptions(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndex arg0,
   ) {
     return _clang_CXIndex_getGlobalOptions(
       arg0,
@@ -343,15 +358,14 @@
   }
 
   late final _clang_CXIndex_getGlobalOptions_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXIndex_getGlobalOptions>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXIndex)>>(
           'clang_CXIndex_getGlobalOptions');
-  late final _dart_clang_CXIndex_getGlobalOptions
-      _clang_CXIndex_getGlobalOptions = _clang_CXIndex_getGlobalOptions_ptr
-          .asFunction<_dart_clang_CXIndex_getGlobalOptions>();
+  late final _clang_CXIndex_getGlobalOptions =
+      _clang_CXIndex_getGlobalOptions_ptr.asFunction<int Function(CXIndex)>();
 
   /// Sets the invocation emission path option in a CXIndex.
   void clang_CXIndex_setInvocationEmissionPathOption(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndex arg0,
     ffi.Pointer<ffi.Int8> Path,
   ) {
     return _clang_CXIndex_setInvocationEmissionPathOption(
@@ -361,16 +375,16 @@
   }
 
   late final _clang_CXIndex_setInvocationEmissionPathOption_ptr = _lookup<
-          ffi.NativeFunction<_c_clang_CXIndex_setInvocationEmissionPathOption>>(
+          ffi.NativeFunction<
+              ffi.Void Function(CXIndex, ffi.Pointer<ffi.Int8>)>>(
       'clang_CXIndex_setInvocationEmissionPathOption');
-  late final _dart_clang_CXIndex_setInvocationEmissionPathOption
-      _clang_CXIndex_setInvocationEmissionPathOption =
+  late final _clang_CXIndex_setInvocationEmissionPathOption =
       _clang_CXIndex_setInvocationEmissionPathOption_ptr
-          .asFunction<_dart_clang_CXIndex_setInvocationEmissionPathOption>();
+          .asFunction<void Function(CXIndex, ffi.Pointer<ffi.Int8>)>();
 
   /// Retrieve the complete file and path name of the given file.
   CXString clang_getFileName(
-    ffi.Pointer<ffi.Void> SFile,
+    CXFile SFile,
   ) {
     return _clang_getFileName(
       SFile,
@@ -378,13 +392,14 @@
   }
 
   late final _clang_getFileName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFileName>>('clang_getFileName');
-  late final _dart_clang_getFileName _clang_getFileName =
-      _clang_getFileName_ptr.asFunction<_dart_clang_getFileName>();
+      _lookup<ffi.NativeFunction<CXString Function(CXFile)>>(
+          'clang_getFileName');
+  late final _clang_getFileName =
+      _clang_getFileName_ptr.asFunction<CXString Function(CXFile)>();
 
   /// Retrieve the last modification time of the given file.
   int clang_getFileTime(
-    ffi.Pointer<ffi.Void> SFile,
+    CXFile SFile,
   ) {
     return _clang_getFileTime(
       SFile,
@@ -392,13 +407,14 @@
   }
 
   late final _clang_getFileTime_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFileTime>>('clang_getFileTime');
-  late final _dart_clang_getFileTime _clang_getFileTime =
-      _clang_getFileTime_ptr.asFunction<_dart_clang_getFileTime>();
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXFile)>>(
+          'clang_getFileTime');
+  late final _clang_getFileTime =
+      _clang_getFileTime_ptr.asFunction<int Function(CXFile)>();
 
   /// Retrieve the unique ID for the given file.
   int clang_getFileUniqueID(
-    ffi.Pointer<ffi.Void> file,
+    CXFile file,
     ffi.Pointer<CXFileUniqueID> outID,
   ) {
     return _clang_getFileUniqueID(
@@ -407,18 +423,19 @@
     );
   }
 
-  late final _clang_getFileUniqueID_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFileUniqueID>>(
-          'clang_getFileUniqueID');
-  late final _dart_clang_getFileUniqueID _clang_getFileUniqueID =
-      _clang_getFileUniqueID_ptr.asFunction<_dart_clang_getFileUniqueID>();
+  late final _clang_getFileUniqueID_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXFile, ffi.Pointer<CXFileUniqueID>)>>('clang_getFileUniqueID');
+  late final _clang_getFileUniqueID = _clang_getFileUniqueID_ptr
+      .asFunction<int Function(CXFile, ffi.Pointer<CXFileUniqueID>)>();
 
   /// Determine whether the given header is guarded against multiple inclusions,
   /// either with the conventional #ifndef/#define/#endif macro guards or with
   /// #pragma once.
   int clang_isFileMultipleIncludeGuarded(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
   ) {
     return _clang_isFileMultipleIncludeGuarded(
       tu,
@@ -426,17 +443,16 @@
     );
   }
 
-  late final _clang_isFileMultipleIncludeGuarded_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isFileMultipleIncludeGuarded>>(
-          'clang_isFileMultipleIncludeGuarded');
-  late final _dart_clang_isFileMultipleIncludeGuarded
-      _clang_isFileMultipleIncludeGuarded =
+  late final _clang_isFileMultipleIncludeGuarded_ptr = _lookup<
+          ffi.NativeFunction<ffi.Uint32 Function(CXTranslationUnit, CXFile)>>(
+      'clang_isFileMultipleIncludeGuarded');
+  late final _clang_isFileMultipleIncludeGuarded =
       _clang_isFileMultipleIncludeGuarded_ptr
-          .asFunction<_dart_clang_isFileMultipleIncludeGuarded>();
+          .asFunction<int Function(CXTranslationUnit, CXFile)>();
 
   /// Retrieve a file handle within the given translation unit.
-  ffi.Pointer<ffi.Void> clang_getFile(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
+  CXFile clang_getFile(
+    CXTranslationUnit tu,
     ffi.Pointer<ffi.Int8> file_name,
   ) {
     return _clang_getFile(
@@ -445,16 +461,18 @@
     );
   }
 
-  late final _clang_getFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFile>>('clang_getFile');
-  late final _dart_clang_getFile _clang_getFile =
-      _clang_getFile_ptr.asFunction<_dart_clang_getFile>();
+  late final _clang_getFile_ptr = _lookup<
+      ffi.NativeFunction<
+          CXFile Function(
+              CXTranslationUnit, ffi.Pointer<ffi.Int8>)>>('clang_getFile');
+  late final _clang_getFile = _clang_getFile_ptr
+      .asFunction<CXFile Function(CXTranslationUnit, ffi.Pointer<ffi.Int8>)>();
 
   /// Retrieve the buffer associated with the given file.
   ffi.Pointer<ffi.Int8> clang_getFileContents(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
-    ffi.Pointer<ffi.Uint64> size,
+    CXTranslationUnit tu,
+    CXFile file,
+    ffi.Pointer<ffi.IntPtr> size,
   ) {
     return _clang_getFileContents(
       tu,
@@ -463,17 +481,19 @@
     );
   }
 
-  late final _clang_getFileContents_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFileContents>>(
-          'clang_getFileContents');
-  late final _dart_clang_getFileContents _clang_getFileContents =
-      _clang_getFileContents_ptr.asFunction<_dart_clang_getFileContents>();
+  late final _clang_getFileContents_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(CXTranslationUnit, CXFile,
+              ffi.Pointer<ffi.IntPtr>)>>('clang_getFileContents');
+  late final _clang_getFileContents = _clang_getFileContents_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(
+          CXTranslationUnit, CXFile, ffi.Pointer<ffi.IntPtr>)>();
 
   /// Returns non-zero if the file1 and file2 point to the same file, or they
   /// are both NULL.
   int clang_File_isEqual(
-    ffi.Pointer<ffi.Void> file1,
-    ffi.Pointer<ffi.Void> file2,
+    CXFile file1,
+    CXFile file2,
   ) {
     return _clang_File_isEqual(
       file1,
@@ -482,13 +502,14 @@
   }
 
   late final _clang_File_isEqual_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_File_isEqual>>('clang_File_isEqual');
-  late final _dart_clang_File_isEqual _clang_File_isEqual =
-      _clang_File_isEqual_ptr.asFunction<_dart_clang_File_isEqual>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXFile, CXFile)>>(
+          'clang_File_isEqual');
+  late final _clang_File_isEqual =
+      _clang_File_isEqual_ptr.asFunction<int Function(CXFile, CXFile)>();
 
   /// Returns the real path name of file.
   CXString clang_File_tryGetRealPathName(
-    ffi.Pointer<ffi.Void> file,
+    CXFile file,
   ) {
     return _clang_File_tryGetRealPathName(
       file,
@@ -496,11 +517,10 @@
   }
 
   late final _clang_File_tryGetRealPathName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_File_tryGetRealPathName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXFile)>>(
           'clang_File_tryGetRealPathName');
-  late final _dart_clang_File_tryGetRealPathName
-      _clang_File_tryGetRealPathName = _clang_File_tryGetRealPathName_ptr
-          .asFunction<_dart_clang_File_tryGetRealPathName>();
+  late final _clang_File_tryGetRealPathName = _clang_File_tryGetRealPathName_ptr
+      .asFunction<CXString Function(CXFile)>();
 
   /// Retrieve a NULL (invalid) source location.
   CXSourceLocation clang_getNullLocation() {
@@ -508,10 +528,10 @@
   }
 
   late final _clang_getNullLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNullLocation>>(
+      _lookup<ffi.NativeFunction<CXSourceLocation Function()>>(
           'clang_getNullLocation');
-  late final _dart_clang_getNullLocation _clang_getNullLocation =
-      _clang_getNullLocation_ptr.asFunction<_dart_clang_getNullLocation>();
+  late final _clang_getNullLocation =
+      _clang_getNullLocation_ptr.asFunction<CXSourceLocation Function()>();
 
   /// Determine whether two source locations, which must refer into the same
   /// translation unit, refer to exactly the same point in the source code.
@@ -525,17 +545,18 @@
     );
   }
 
-  late final _clang_equalLocations_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_equalLocations>>(
-          'clang_equalLocations');
-  late final _dart_clang_equalLocations _clang_equalLocations =
-      _clang_equalLocations_ptr.asFunction<_dart_clang_equalLocations>();
+  late final _clang_equalLocations_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(
+              CXSourceLocation, CXSourceLocation)>>('clang_equalLocations');
+  late final _clang_equalLocations = _clang_equalLocations_ptr
+      .asFunction<int Function(CXSourceLocation, CXSourceLocation)>();
 
   /// Retrieves the source location associated with a given file/line/column in
   /// a particular translation unit.
   CXSourceLocation clang_getLocation(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
     int line,
     int column,
   ) {
@@ -547,16 +568,18 @@
     );
   }
 
-  late final _clang_getLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getLocation>>('clang_getLocation');
-  late final _dart_clang_getLocation _clang_getLocation =
-      _clang_getLocation_ptr.asFunction<_dart_clang_getLocation>();
+  late final _clang_getLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          CXSourceLocation Function(CXTranslationUnit, CXFile, ffi.Uint32,
+              ffi.Uint32)>>('clang_getLocation');
+  late final _clang_getLocation = _clang_getLocation_ptr.asFunction<
+      CXSourceLocation Function(CXTranslationUnit, CXFile, int, int)>();
 
   /// Retrieves the source location associated with a given character offset in
   /// a particular translation unit.
   CXSourceLocation clang_getLocationForOffset(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
     int offset,
   ) {
     return _clang_getLocationForOffset(
@@ -566,12 +589,12 @@
     );
   }
 
-  late final _clang_getLocationForOffset_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getLocationForOffset>>(
-          'clang_getLocationForOffset');
-  late final _dart_clang_getLocationForOffset _clang_getLocationForOffset =
-      _clang_getLocationForOffset_ptr
-          .asFunction<_dart_clang_getLocationForOffset>();
+  late final _clang_getLocationForOffset_ptr = _lookup<
+      ffi.NativeFunction<
+          CXSourceLocation Function(CXTranslationUnit, CXFile,
+              ffi.Uint32)>>('clang_getLocationForOffset');
+  late final _clang_getLocationForOffset = _clang_getLocationForOffset_ptr
+      .asFunction<CXSourceLocation Function(CXTranslationUnit, CXFile, int)>();
 
   /// Returns non-zero if the given source location is in a system header.
   int clang_Location_isInSystemHeader(
@@ -583,11 +606,11 @@
   }
 
   late final _clang_Location_isInSystemHeader_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Location_isInSystemHeader>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXSourceLocation)>>(
           'clang_Location_isInSystemHeader');
-  late final _dart_clang_Location_isInSystemHeader
-      _clang_Location_isInSystemHeader = _clang_Location_isInSystemHeader_ptr
-          .asFunction<_dart_clang_Location_isInSystemHeader>();
+  late final _clang_Location_isInSystemHeader =
+      _clang_Location_isInSystemHeader_ptr
+          .asFunction<int Function(CXSourceLocation)>();
 
   /// Returns non-zero if the given source location is in the main file of the
   /// corresponding translation unit.
@@ -600,11 +623,10 @@
   }
 
   late final _clang_Location_isFromMainFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Location_isFromMainFile>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXSourceLocation)>>(
           'clang_Location_isFromMainFile');
-  late final _dart_clang_Location_isFromMainFile
-      _clang_Location_isFromMainFile = _clang_Location_isFromMainFile_ptr
-          .asFunction<_dart_clang_Location_isFromMainFile>();
+  late final _clang_Location_isFromMainFile = _clang_Location_isFromMainFile_ptr
+      .asFunction<int Function(CXSourceLocation)>();
 
   /// Retrieve a NULL (invalid) source range.
   CXSourceRange clang_getNullRange() {
@@ -612,9 +634,10 @@
   }
 
   late final _clang_getNullRange_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNullRange>>('clang_getNullRange');
-  late final _dart_clang_getNullRange _clang_getNullRange =
-      _clang_getNullRange_ptr.asFunction<_dart_clang_getNullRange>();
+      _lookup<ffi.NativeFunction<CXSourceRange Function()>>(
+          'clang_getNullRange');
+  late final _clang_getNullRange =
+      _clang_getNullRange_ptr.asFunction<CXSourceRange Function()>();
 
   /// Retrieve a source range given the beginning and ending source locations.
   CXSourceRange clang_getRange(
@@ -627,10 +650,12 @@
     );
   }
 
-  late final _clang_getRange_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getRange>>('clang_getRange');
-  late final _dart_clang_getRange _clang_getRange =
-      _clang_getRange_ptr.asFunction<_dart_clang_getRange>();
+  late final _clang_getRange_ptr = _lookup<
+      ffi.NativeFunction<
+          CXSourceRange Function(
+              CXSourceLocation, CXSourceLocation)>>('clang_getRange');
+  late final _clang_getRange = _clang_getRange_ptr
+      .asFunction<CXSourceRange Function(CXSourceLocation, CXSourceLocation)>();
 
   /// Determine whether two ranges are equivalent.
   int clang_equalRanges(
@@ -643,10 +668,12 @@
     );
   }
 
-  late final _clang_equalRanges_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_equalRanges>>('clang_equalRanges');
-  late final _dart_clang_equalRanges _clang_equalRanges =
-      _clang_equalRanges_ptr.asFunction<_dart_clang_equalRanges>();
+  late final _clang_equalRanges_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(
+              CXSourceRange, CXSourceRange)>>('clang_equalRanges');
+  late final _clang_equalRanges = _clang_equalRanges_ptr
+      .asFunction<int Function(CXSourceRange, CXSourceRange)>();
 
   /// Returns non-zero if range is null.
   int clang_Range_isNull(
@@ -658,15 +685,16 @@
   }
 
   late final _clang_Range_isNull_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Range_isNull>>('clang_Range_isNull');
-  late final _dart_clang_Range_isNull _clang_Range_isNull =
-      _clang_Range_isNull_ptr.asFunction<_dart_clang_Range_isNull>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXSourceRange)>>(
+          'clang_Range_isNull');
+  late final _clang_Range_isNull =
+      _clang_Range_isNull_ptr.asFunction<int Function(CXSourceRange)>();
 
   /// Retrieve the file, line, column, and offset represented by the given
   /// source location.
   void clang_getExpansionLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -680,12 +708,22 @@
     );
   }
 
-  late final _clang_getExpansionLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getExpansionLocation>>(
-          'clang_getExpansionLocation');
-  late final _dart_clang_getExpansionLocation _clang_getExpansionLocation =
-      _clang_getExpansionLocation_ptr
-          .asFunction<_dart_clang_getExpansionLocation>();
+  late final _clang_getExpansionLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_getExpansionLocation');
+  late final _clang_getExpansionLocation =
+      _clang_getExpansionLocation_ptr.asFunction<
+          void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the file, line and column represented by the given source
   /// location, as specified in a # line directive.
@@ -703,18 +741,23 @@
     );
   }
 
-  late final _clang_getPresumedLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getPresumedLocation>>(
-          'clang_getPresumedLocation');
-  late final _dart_clang_getPresumedLocation _clang_getPresumedLocation =
-      _clang_getPresumedLocation_ptr
-          .asFunction<_dart_clang_getPresumedLocation>();
+  late final _clang_getPresumedLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_getPresumedLocation');
+  late final _clang_getPresumedLocation =
+      _clang_getPresumedLocation_ptr.asFunction<
+          void Function(CXSourceLocation, ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Uint32>, ffi.Pointer<ffi.Uint32>)>();
 
   /// Legacy API to retrieve the file, line, column, and offset represented by
   /// the given source location.
   void clang_getInstantiationLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -728,18 +771,28 @@
     );
   }
 
-  late final _clang_getInstantiationLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getInstantiationLocation>>(
-          'clang_getInstantiationLocation');
-  late final _dart_clang_getInstantiationLocation
-      _clang_getInstantiationLocation = _clang_getInstantiationLocation_ptr
-          .asFunction<_dart_clang_getInstantiationLocation>();
+  late final _clang_getInstantiationLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_getInstantiationLocation');
+  late final _clang_getInstantiationLocation =
+      _clang_getInstantiationLocation_ptr.asFunction<
+          void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the file, line, column, and offset represented by the given
   /// source location.
   void clang_getSpellingLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -753,18 +806,28 @@
     );
   }
 
-  late final _clang_getSpellingLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getSpellingLocation>>(
-          'clang_getSpellingLocation');
-  late final _dart_clang_getSpellingLocation _clang_getSpellingLocation =
-      _clang_getSpellingLocation_ptr
-          .asFunction<_dart_clang_getSpellingLocation>();
+  late final _clang_getSpellingLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_getSpellingLocation');
+  late final _clang_getSpellingLocation =
+      _clang_getSpellingLocation_ptr.asFunction<
+          void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the file, line, column, and offset represented by the given
   /// source location.
   void clang_getFileLocation(
     CXSourceLocation location,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -778,11 +841,21 @@
     );
   }
 
-  late final _clang_getFileLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFileLocation>>(
-          'clang_getFileLocation');
-  late final _dart_clang_getFileLocation _clang_getFileLocation =
-      _clang_getFileLocation_ptr.asFunction<_dart_clang_getFileLocation>();
+  late final _clang_getFileLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXSourceLocation,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_getFileLocation');
+  late final _clang_getFileLocation = _clang_getFileLocation_ptr.asFunction<
+      void Function(
+          CXSourceLocation,
+          ffi.Pointer<CXFile>,
+          ffi.Pointer<ffi.Uint32>,
+          ffi.Pointer<ffi.Uint32>,
+          ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve a source location representing the first character within a
   /// source range.
@@ -795,10 +868,10 @@
   }
 
   late final _clang_getRangeStart_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getRangeStart>>(
+      _lookup<ffi.NativeFunction<CXSourceLocation Function(CXSourceRange)>>(
           'clang_getRangeStart');
-  late final _dart_clang_getRangeStart _clang_getRangeStart =
-      _clang_getRangeStart_ptr.asFunction<_dart_clang_getRangeStart>();
+  late final _clang_getRangeStart = _clang_getRangeStart_ptr
+      .asFunction<CXSourceLocation Function(CXSourceRange)>();
 
   /// Retrieve a source location representing the last character within a source
   /// range.
@@ -811,14 +884,15 @@
   }
 
   late final _clang_getRangeEnd_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getRangeEnd>>('clang_getRangeEnd');
-  late final _dart_clang_getRangeEnd _clang_getRangeEnd =
-      _clang_getRangeEnd_ptr.asFunction<_dart_clang_getRangeEnd>();
+      _lookup<ffi.NativeFunction<CXSourceLocation Function(CXSourceRange)>>(
+          'clang_getRangeEnd');
+  late final _clang_getRangeEnd = _clang_getRangeEnd_ptr
+      .asFunction<CXSourceLocation Function(CXSourceRange)>();
 
   /// Retrieve all ranges that were skipped by the preprocessor.
   ffi.Pointer<CXSourceRangeList> clang_getSkippedRanges(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit tu,
+    CXFile file,
   ) {
     return _clang_getSkippedRanges(
       tu,
@@ -826,27 +900,28 @@
     );
   }
 
-  late final _clang_getSkippedRanges_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getSkippedRanges>>(
-          'clang_getSkippedRanges');
-  late final _dart_clang_getSkippedRanges _clang_getSkippedRanges =
-      _clang_getSkippedRanges_ptr.asFunction<_dart_clang_getSkippedRanges>();
+  late final _clang_getSkippedRanges_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<CXSourceRangeList> Function(
+              CXTranslationUnit, CXFile)>>('clang_getSkippedRanges');
+  late final _clang_getSkippedRanges = _clang_getSkippedRanges_ptr.asFunction<
+      ffi.Pointer<CXSourceRangeList> Function(CXTranslationUnit, CXFile)>();
 
   /// Retrieve all ranges from all files that were skipped by the preprocessor.
   ffi.Pointer<CXSourceRangeList> clang_getAllSkippedRanges(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
+    CXTranslationUnit tu,
   ) {
     return _clang_getAllSkippedRanges(
       tu,
     );
   }
 
-  late final _clang_getAllSkippedRanges_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getAllSkippedRanges>>(
-          'clang_getAllSkippedRanges');
-  late final _dart_clang_getAllSkippedRanges _clang_getAllSkippedRanges =
-      _clang_getAllSkippedRanges_ptr
-          .asFunction<_dart_clang_getAllSkippedRanges>();
+  late final _clang_getAllSkippedRanges_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<CXSourceRangeList> Function(
+              CXTranslationUnit)>>('clang_getAllSkippedRanges');
+  late final _clang_getAllSkippedRanges = _clang_getAllSkippedRanges_ptr
+      .asFunction<ffi.Pointer<CXSourceRangeList> Function(CXTranslationUnit)>();
 
   /// Destroy the given CXSourceRangeList.
   void clang_disposeSourceRangeList(
@@ -857,16 +932,16 @@
     );
   }
 
-  late final _clang_disposeSourceRangeList_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeSourceRangeList>>(
-          'clang_disposeSourceRangeList');
-  late final _dart_clang_disposeSourceRangeList _clang_disposeSourceRangeList =
-      _clang_disposeSourceRangeList_ptr
-          .asFunction<_dart_clang_disposeSourceRangeList>();
+  late final _clang_disposeSourceRangeList_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<CXSourceRangeList>)>>('clang_disposeSourceRangeList');
+  late final _clang_disposeSourceRangeList = _clang_disposeSourceRangeList_ptr
+      .asFunction<void Function(ffi.Pointer<CXSourceRangeList>)>();
 
   /// Determine the number of diagnostics in a CXDiagnosticSet.
   int clang_getNumDiagnosticsInSet(
-    ffi.Pointer<ffi.Void> Diags,
+    CXDiagnosticSet Diags,
   ) {
     return _clang_getNumDiagnosticsInSet(
       Diags,
@@ -874,15 +949,14 @@
   }
 
   late final _clang_getNumDiagnosticsInSet_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumDiagnosticsInSet>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXDiagnosticSet)>>(
           'clang_getNumDiagnosticsInSet');
-  late final _dart_clang_getNumDiagnosticsInSet _clang_getNumDiagnosticsInSet =
-      _clang_getNumDiagnosticsInSet_ptr
-          .asFunction<_dart_clang_getNumDiagnosticsInSet>();
+  late final _clang_getNumDiagnosticsInSet = _clang_getNumDiagnosticsInSet_ptr
+      .asFunction<int Function(CXDiagnosticSet)>();
 
   /// Retrieve a diagnostic associated with the given CXDiagnosticSet.
-  ffi.Pointer<ffi.Void> clang_getDiagnosticInSet(
-    ffi.Pointer<ffi.Void> Diags,
+  CXDiagnostic clang_getDiagnosticInSet(
+    CXDiagnosticSet Diags,
     int Index,
   ) {
     return _clang_getDiagnosticInSet(
@@ -891,15 +965,15 @@
     );
   }
 
-  late final _clang_getDiagnosticInSet_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticInSet>>(
-          'clang_getDiagnosticInSet');
-  late final _dart_clang_getDiagnosticInSet _clang_getDiagnosticInSet =
-      _clang_getDiagnosticInSet_ptr
-          .asFunction<_dart_clang_getDiagnosticInSet>();
+  late final _clang_getDiagnosticInSet_ptr = _lookup<
+      ffi.NativeFunction<
+          CXDiagnostic Function(
+              CXDiagnosticSet, ffi.Uint32)>>('clang_getDiagnosticInSet');
+  late final _clang_getDiagnosticInSet = _clang_getDiagnosticInSet_ptr
+      .asFunction<CXDiagnostic Function(CXDiagnosticSet, int)>();
 
   /// Deserialize a set of diagnostics from a Clang diagnostics bitcode file.
-  ffi.Pointer<ffi.Void> clang_loadDiagnostics(
+  CXDiagnosticSet clang_loadDiagnostics(
     ffi.Pointer<ffi.Int8> file,
     ffi.Pointer<ffi.Int32> error,
     ffi.Pointer<CXString> errorString,
@@ -911,15 +985,19 @@
     );
   }
 
-  late final _clang_loadDiagnostics_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_loadDiagnostics>>(
-          'clang_loadDiagnostics');
-  late final _dart_clang_loadDiagnostics _clang_loadDiagnostics =
-      _clang_loadDiagnostics_ptr.asFunction<_dart_clang_loadDiagnostics>();
+  late final _clang_loadDiagnostics_ptr = _lookup<
+      ffi.NativeFunction<
+          CXDiagnosticSet Function(
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<CXString>)>>('clang_loadDiagnostics');
+  late final _clang_loadDiagnostics = _clang_loadDiagnostics_ptr.asFunction<
+      CXDiagnosticSet Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int32>,
+          ffi.Pointer<CXString>)>();
 
   /// Release a CXDiagnosticSet and all of its contained diagnostics.
   void clang_disposeDiagnosticSet(
-    ffi.Pointer<ffi.Void> Diags,
+    CXDiagnosticSet Diags,
   ) {
     return _clang_disposeDiagnosticSet(
       Diags,
@@ -927,15 +1005,14 @@
   }
 
   late final _clang_disposeDiagnosticSet_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeDiagnosticSet>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXDiagnosticSet)>>(
           'clang_disposeDiagnosticSet');
-  late final _dart_clang_disposeDiagnosticSet _clang_disposeDiagnosticSet =
-      _clang_disposeDiagnosticSet_ptr
-          .asFunction<_dart_clang_disposeDiagnosticSet>();
+  late final _clang_disposeDiagnosticSet = _clang_disposeDiagnosticSet_ptr
+      .asFunction<void Function(CXDiagnosticSet)>();
 
   /// Retrieve the child diagnostics of a CXDiagnostic.
-  ffi.Pointer<ffi.Void> clang_getChildDiagnostics(
-    ffi.Pointer<ffi.Void> D,
+  CXDiagnosticSet clang_getChildDiagnostics(
+    CXDiagnostic D,
   ) {
     return _clang_getChildDiagnostics(
       D,
@@ -943,16 +1020,15 @@
   }
 
   late final _clang_getChildDiagnostics_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getChildDiagnostics>>(
+      _lookup<ffi.NativeFunction<CXDiagnosticSet Function(CXDiagnostic)>>(
           'clang_getChildDiagnostics');
-  late final _dart_clang_getChildDiagnostics _clang_getChildDiagnostics =
-      _clang_getChildDiagnostics_ptr
-          .asFunction<_dart_clang_getChildDiagnostics>();
+  late final _clang_getChildDiagnostics = _clang_getChildDiagnostics_ptr
+      .asFunction<CXDiagnosticSet Function(CXDiagnostic)>();
 
   /// Determine the number of diagnostics produced for the given translation
   /// unit.
   int clang_getNumDiagnostics(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+    CXTranslationUnit Unit,
   ) {
     return _clang_getNumDiagnostics(
       Unit,
@@ -960,14 +1036,14 @@
   }
 
   late final _clang_getNumDiagnostics_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumDiagnostics>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXTranslationUnit)>>(
           'clang_getNumDiagnostics');
-  late final _dart_clang_getNumDiagnostics _clang_getNumDiagnostics =
-      _clang_getNumDiagnostics_ptr.asFunction<_dart_clang_getNumDiagnostics>();
+  late final _clang_getNumDiagnostics = _clang_getNumDiagnostics_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Retrieve a diagnostic associated with the given translation unit.
-  ffi.Pointer<ffi.Void> clang_getDiagnostic(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+  CXDiagnostic clang_getDiagnostic(
+    CXTranslationUnit Unit,
     int Index,
   ) {
     return _clang_getDiagnostic(
@@ -976,16 +1052,17 @@
     );
   }
 
-  late final _clang_getDiagnostic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnostic>>(
-          'clang_getDiagnostic');
-  late final _dart_clang_getDiagnostic _clang_getDiagnostic =
-      _clang_getDiagnostic_ptr.asFunction<_dart_clang_getDiagnostic>();
+  late final _clang_getDiagnostic_ptr = _lookup<
+      ffi.NativeFunction<
+          CXDiagnostic Function(
+              CXTranslationUnit, ffi.Uint32)>>('clang_getDiagnostic');
+  late final _clang_getDiagnostic = _clang_getDiagnostic_ptr
+      .asFunction<CXDiagnostic Function(CXTranslationUnit, int)>();
 
   /// Retrieve the complete set of diagnostics associated with a translation
   /// unit.
-  ffi.Pointer<ffi.Void> clang_getDiagnosticSetFromTU(
-    ffi.Pointer<CXTranslationUnitImpl> Unit,
+  CXDiagnosticSet clang_getDiagnosticSetFromTU(
+    CXTranslationUnit Unit,
   ) {
     return _clang_getDiagnosticSetFromTU(
       Unit,
@@ -993,15 +1070,14 @@
   }
 
   late final _clang_getDiagnosticSetFromTU_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticSetFromTU>>(
+      _lookup<ffi.NativeFunction<CXDiagnosticSet Function(CXTranslationUnit)>>(
           'clang_getDiagnosticSetFromTU');
-  late final _dart_clang_getDiagnosticSetFromTU _clang_getDiagnosticSetFromTU =
-      _clang_getDiagnosticSetFromTU_ptr
-          .asFunction<_dart_clang_getDiagnosticSetFromTU>();
+  late final _clang_getDiagnosticSetFromTU = _clang_getDiagnosticSetFromTU_ptr
+      .asFunction<CXDiagnosticSet Function(CXTranslationUnit)>();
 
   /// Destroy a diagnostic.
   void clang_disposeDiagnostic(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
   ) {
     return _clang_disposeDiagnostic(
       Diagnostic,
@@ -1009,14 +1085,14 @@
   }
 
   late final _clang_disposeDiagnostic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeDiagnostic>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXDiagnostic)>>(
           'clang_disposeDiagnostic');
-  late final _dart_clang_disposeDiagnostic _clang_disposeDiagnostic =
-      _clang_disposeDiagnostic_ptr.asFunction<_dart_clang_disposeDiagnostic>();
+  late final _clang_disposeDiagnostic =
+      _clang_disposeDiagnostic_ptr.asFunction<void Function(CXDiagnostic)>();
 
   /// Format the given diagnostic in a manner that is suitable for display.
   CXString clang_formatDiagnostic(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
     int Options,
   ) {
     return _clang_formatDiagnostic(
@@ -1026,10 +1102,10 @@
   }
 
   late final _clang_formatDiagnostic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_formatDiagnostic>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXDiagnostic, ffi.Uint32)>>(
           'clang_formatDiagnostic');
-  late final _dart_clang_formatDiagnostic _clang_formatDiagnostic =
-      _clang_formatDiagnostic_ptr.asFunction<_dart_clang_formatDiagnostic>();
+  late final _clang_formatDiagnostic = _clang_formatDiagnostic_ptr
+      .asFunction<CXString Function(CXDiagnostic, int)>();
 
   /// Retrieve the set of display options most similar to the default behavior
   /// of the clang compiler.
@@ -1038,16 +1114,14 @@
   }
 
   late final _clang_defaultDiagnosticDisplayOptions_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_defaultDiagnosticDisplayOptions>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function()>>(
           'clang_defaultDiagnosticDisplayOptions');
-  late final _dart_clang_defaultDiagnosticDisplayOptions
-      _clang_defaultDiagnosticDisplayOptions =
-      _clang_defaultDiagnosticDisplayOptions_ptr
-          .asFunction<_dart_clang_defaultDiagnosticDisplayOptions>();
+  late final _clang_defaultDiagnosticDisplayOptions =
+      _clang_defaultDiagnosticDisplayOptions_ptr.asFunction<int Function()>();
 
   /// Determine the severity of the given diagnostic.
   int clang_getDiagnosticSeverity(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticSeverity(
       arg0,
@@ -1055,15 +1129,14 @@
   }
 
   late final _clang_getDiagnosticSeverity_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticSeverity>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXDiagnostic)>>(
           'clang_getDiagnosticSeverity');
-  late final _dart_clang_getDiagnosticSeverity _clang_getDiagnosticSeverity =
-      _clang_getDiagnosticSeverity_ptr
-          .asFunction<_dart_clang_getDiagnosticSeverity>();
+  late final _clang_getDiagnosticSeverity =
+      _clang_getDiagnosticSeverity_ptr.asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve the source location of the given diagnostic.
   CXSourceLocation clang_getDiagnosticLocation(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticLocation(
       arg0,
@@ -1071,15 +1144,14 @@
   }
 
   late final _clang_getDiagnosticLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticLocation>>(
+      _lookup<ffi.NativeFunction<CXSourceLocation Function(CXDiagnostic)>>(
           'clang_getDiagnosticLocation');
-  late final _dart_clang_getDiagnosticLocation _clang_getDiagnosticLocation =
-      _clang_getDiagnosticLocation_ptr
-          .asFunction<_dart_clang_getDiagnosticLocation>();
+  late final _clang_getDiagnosticLocation = _clang_getDiagnosticLocation_ptr
+      .asFunction<CXSourceLocation Function(CXDiagnostic)>();
 
   /// Retrieve the text of the given diagnostic.
   CXString clang_getDiagnosticSpelling(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticSpelling(
       arg0,
@@ -1087,15 +1159,14 @@
   }
 
   late final _clang_getDiagnosticSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXDiagnostic)>>(
           'clang_getDiagnosticSpelling');
-  late final _dart_clang_getDiagnosticSpelling _clang_getDiagnosticSpelling =
-      _clang_getDiagnosticSpelling_ptr
-          .asFunction<_dart_clang_getDiagnosticSpelling>();
+  late final _clang_getDiagnosticSpelling = _clang_getDiagnosticSpelling_ptr
+      .asFunction<CXString Function(CXDiagnostic)>();
 
   /// Retrieve the name of the command-line option that enabled this diagnostic.
   CXString clang_getDiagnosticOption(
-    ffi.Pointer<ffi.Void> Diag,
+    CXDiagnostic Diag,
     ffi.Pointer<CXString> Disable,
   ) {
     return _clang_getDiagnosticOption(
@@ -1104,16 +1175,16 @@
     );
   }
 
-  late final _clang_getDiagnosticOption_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticOption>>(
-          'clang_getDiagnosticOption');
-  late final _dart_clang_getDiagnosticOption _clang_getDiagnosticOption =
-      _clang_getDiagnosticOption_ptr
-          .asFunction<_dart_clang_getDiagnosticOption>();
+  late final _clang_getDiagnosticOption_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(CXDiagnostic,
+              ffi.Pointer<CXString>)>>('clang_getDiagnosticOption');
+  late final _clang_getDiagnosticOption = _clang_getDiagnosticOption_ptr
+      .asFunction<CXString Function(CXDiagnostic, ffi.Pointer<CXString>)>();
 
   /// Retrieve the category number for this diagnostic.
   int clang_getDiagnosticCategory(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticCategory(
       arg0,
@@ -1121,11 +1192,10 @@
   }
 
   late final _clang_getDiagnosticCategory_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticCategory>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXDiagnostic)>>(
           'clang_getDiagnosticCategory');
-  late final _dart_clang_getDiagnosticCategory _clang_getDiagnosticCategory =
-      _clang_getDiagnosticCategory_ptr
-          .asFunction<_dart_clang_getDiagnosticCategory>();
+  late final _clang_getDiagnosticCategory =
+      _clang_getDiagnosticCategory_ptr.asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve the name of a particular diagnostic category. This is now
   /// deprecated. Use clang_getDiagnosticCategoryText() instead.
@@ -1138,15 +1208,14 @@
   }
 
   late final _clang_getDiagnosticCategoryName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticCategoryName>>(
+      _lookup<ffi.NativeFunction<CXString Function(ffi.Uint32)>>(
           'clang_getDiagnosticCategoryName');
-  late final _dart_clang_getDiagnosticCategoryName
-      _clang_getDiagnosticCategoryName = _clang_getDiagnosticCategoryName_ptr
-          .asFunction<_dart_clang_getDiagnosticCategoryName>();
+  late final _clang_getDiagnosticCategoryName =
+      _clang_getDiagnosticCategoryName_ptr.asFunction<CXString Function(int)>();
 
   /// Retrieve the diagnostic category text for a given diagnostic.
   CXString clang_getDiagnosticCategoryText(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticCategoryText(
       arg0,
@@ -1154,16 +1223,16 @@
   }
 
   late final _clang_getDiagnosticCategoryText_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticCategoryText>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXDiagnostic)>>(
           'clang_getDiagnosticCategoryText');
-  late final _dart_clang_getDiagnosticCategoryText
-      _clang_getDiagnosticCategoryText = _clang_getDiagnosticCategoryText_ptr
-          .asFunction<_dart_clang_getDiagnosticCategoryText>();
+  late final _clang_getDiagnosticCategoryText =
+      _clang_getDiagnosticCategoryText_ptr
+          .asFunction<CXString Function(CXDiagnostic)>();
 
   /// Determine the number of source ranges associated with the given
   /// diagnostic.
   int clang_getDiagnosticNumRanges(
-    ffi.Pointer<ffi.Void> arg0,
+    CXDiagnostic arg0,
   ) {
     return _clang_getDiagnosticNumRanges(
       arg0,
@@ -1171,15 +1240,14 @@
   }
 
   late final _clang_getDiagnosticNumRanges_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticNumRanges>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXDiagnostic)>>(
           'clang_getDiagnosticNumRanges');
-  late final _dart_clang_getDiagnosticNumRanges _clang_getDiagnosticNumRanges =
-      _clang_getDiagnosticNumRanges_ptr
-          .asFunction<_dart_clang_getDiagnosticNumRanges>();
+  late final _clang_getDiagnosticNumRanges = _clang_getDiagnosticNumRanges_ptr
+      .asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve a source range associated with the diagnostic.
   CXSourceRange clang_getDiagnosticRange(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
     int Range,
   ) {
     return _clang_getDiagnosticRange(
@@ -1188,16 +1256,15 @@
     );
   }
 
-  late final _clang_getDiagnosticRange_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticRange>>(
-          'clang_getDiagnosticRange');
-  late final _dart_clang_getDiagnosticRange _clang_getDiagnosticRange =
-      _clang_getDiagnosticRange_ptr
-          .asFunction<_dart_clang_getDiagnosticRange>();
+  late final _clang_getDiagnosticRange_ptr = _lookup<
+          ffi.NativeFunction<CXSourceRange Function(CXDiagnostic, ffi.Uint32)>>(
+      'clang_getDiagnosticRange');
+  late final _clang_getDiagnosticRange = _clang_getDiagnosticRange_ptr
+      .asFunction<CXSourceRange Function(CXDiagnostic, int)>();
 
   /// Determine the number of fix-it hints associated with the given diagnostic.
   int clang_getDiagnosticNumFixIts(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
   ) {
     return _clang_getDiagnosticNumFixIts(
       Diagnostic,
@@ -1205,15 +1272,14 @@
   }
 
   late final _clang_getDiagnosticNumFixIts_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticNumFixIts>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXDiagnostic)>>(
           'clang_getDiagnosticNumFixIts');
-  late final _dart_clang_getDiagnosticNumFixIts _clang_getDiagnosticNumFixIts =
-      _clang_getDiagnosticNumFixIts_ptr
-          .asFunction<_dart_clang_getDiagnosticNumFixIts>();
+  late final _clang_getDiagnosticNumFixIts = _clang_getDiagnosticNumFixIts_ptr
+      .asFunction<int Function(CXDiagnostic)>();
 
   /// Retrieve the replacement information for a given fix-it.
   CXString clang_getDiagnosticFixIt(
-    ffi.Pointer<ffi.Void> Diagnostic,
+    CXDiagnostic Diagnostic,
     int FixIt,
     ffi.Pointer<CXSourceRange> ReplacementRange,
   ) {
@@ -1224,16 +1290,17 @@
     );
   }
 
-  late final _clang_getDiagnosticFixIt_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDiagnosticFixIt>>(
-          'clang_getDiagnosticFixIt');
-  late final _dart_clang_getDiagnosticFixIt _clang_getDiagnosticFixIt =
-      _clang_getDiagnosticFixIt_ptr
-          .asFunction<_dart_clang_getDiagnosticFixIt>();
+  late final _clang_getDiagnosticFixIt_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(CXDiagnostic, ffi.Uint32,
+              ffi.Pointer<CXSourceRange>)>>('clang_getDiagnosticFixIt');
+  late final _clang_getDiagnosticFixIt =
+      _clang_getDiagnosticFixIt_ptr.asFunction<
+          CXString Function(CXDiagnostic, int, ffi.Pointer<CXSourceRange>)>();
 
   /// Get the original translation unit source file name.
   CXString clang_getTranslationUnitSpelling(
-    ffi.Pointer<CXTranslationUnitImpl> CTUnit,
+    CXTranslationUnit CTUnit,
   ) {
     return _clang_getTranslationUnitSpelling(
       CTUnit,
@@ -1241,16 +1308,16 @@
   }
 
   late final _clang_getTranslationUnitSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTranslationUnitSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXTranslationUnit)>>(
           'clang_getTranslationUnitSpelling');
-  late final _dart_clang_getTranslationUnitSpelling
-      _clang_getTranslationUnitSpelling = _clang_getTranslationUnitSpelling_ptr
-          .asFunction<_dart_clang_getTranslationUnitSpelling>();
+  late final _clang_getTranslationUnitSpelling =
+      _clang_getTranslationUnitSpelling_ptr
+          .asFunction<CXString Function(CXTranslationUnit)>();
 
   /// Return the CXTranslationUnit for a given source file and the provided
   /// command line arguments one would pass to the compiler.
-  ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnitFromSourceFile(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXTranslationUnit clang_createTranslationUnitFromSourceFile(
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     int num_clang_command_line_args,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
@@ -1267,19 +1334,31 @@
     );
   }
 
-  late final _clang_createTranslationUnitFromSourceFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_createTranslationUnitFromSourceFile>>(
-          'clang_createTranslationUnitFromSourceFile');
-  late final _dart_clang_createTranslationUnitFromSourceFile
-      _clang_createTranslationUnitFromSourceFile =
-      _clang_createTranslationUnitFromSourceFile_ptr
-          .asFunction<_dart_clang_createTranslationUnitFromSourceFile>();
+  late final _clang_createTranslationUnitFromSourceFile_ptr = _lookup<
+          ffi.NativeFunction<
+              CXTranslationUnit Function(
+                  CXIndex,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Int32,
+                  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                  ffi.Uint32,
+                  ffi.Pointer<CXUnsavedFile>)>>(
+      'clang_createTranslationUnitFromSourceFile');
+  late final _clang_createTranslationUnitFromSourceFile =
+      _clang_createTranslationUnitFromSourceFile_ptr.asFunction<
+          CXTranslationUnit Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              int,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>)>();
 
   /// Same as clang_createTranslationUnit2, but returns the CXTranslationUnit
   /// instead of an error code. In case of an error this routine returns a NULL
   /// CXTranslationUnit, without further detailed error codes.
-  ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnit(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXTranslationUnit clang_createTranslationUnit(
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> ast_filename,
   ) {
     return _clang_createTranslationUnit(
@@ -1288,18 +1367,18 @@
     );
   }
 
-  late final _clang_createTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_createTranslationUnit>>(
-          'clang_createTranslationUnit');
-  late final _dart_clang_createTranslationUnit _clang_createTranslationUnit =
-      _clang_createTranslationUnit_ptr
-          .asFunction<_dart_clang_createTranslationUnit>();
+  late final _clang_createTranslationUnit_ptr = _lookup<
+      ffi.NativeFunction<
+          CXTranslationUnit Function(
+              CXIndex, ffi.Pointer<ffi.Int8>)>>('clang_createTranslationUnit');
+  late final _clang_createTranslationUnit = _clang_createTranslationUnit_ptr
+      .asFunction<CXTranslationUnit Function(CXIndex, ffi.Pointer<ffi.Int8>)>();
 
   /// Create a translation unit from an AST file ( -emit-ast).
   int clang_createTranslationUnit2(
-    ffi.Pointer<ffi.Void> CIdx,
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> ast_filename,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
   ) {
     return _clang_createTranslationUnit2(
       CIdx,
@@ -1308,12 +1387,14 @@
     );
   }
 
-  late final _clang_createTranslationUnit2_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_createTranslationUnit2>>(
-          'clang_createTranslationUnit2');
-  late final _dart_clang_createTranslationUnit2 _clang_createTranslationUnit2 =
-      _clang_createTranslationUnit2_ptr
-          .asFunction<_dart_clang_createTranslationUnit2>();
+  late final _clang_createTranslationUnit2_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(CXIndex, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<CXTranslationUnit>)>>('clang_createTranslationUnit2');
+  late final _clang_createTranslationUnit2 =
+      _clang_createTranslationUnit2_ptr.asFunction<
+          int Function(CXIndex, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<CXTranslationUnit>)>();
 
   /// Returns the set of flags that is suitable for parsing a translation unit
   /// that is being edited.
@@ -1321,19 +1402,18 @@
     return _clang_defaultEditingTranslationUnitOptions();
   }
 
-  late final _clang_defaultEditingTranslationUnitOptions_ptr = _lookup<
-          ffi.NativeFunction<_c_clang_defaultEditingTranslationUnitOptions>>(
-      'clang_defaultEditingTranslationUnitOptions');
-  late final _dart_clang_defaultEditingTranslationUnitOptions
-      _clang_defaultEditingTranslationUnitOptions =
+  late final _clang_defaultEditingTranslationUnitOptions_ptr =
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function()>>(
+          'clang_defaultEditingTranslationUnitOptions');
+  late final _clang_defaultEditingTranslationUnitOptions =
       _clang_defaultEditingTranslationUnitOptions_ptr
-          .asFunction<_dart_clang_defaultEditingTranslationUnitOptions>();
+          .asFunction<int Function()>();
 
   /// Same as clang_parseTranslationUnit2, but returns the CXTranslationUnit
   /// instead of an error code. In case of an error this routine returns a NULL
   /// CXTranslationUnit, without further detailed error codes.
-  ffi.Pointer<CXTranslationUnitImpl> clang_parseTranslationUnit(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXTranslationUnit clang_parseTranslationUnit(
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
     int num_command_line_args,
@@ -1352,24 +1432,38 @@
     );
   }
 
-  late final _clang_parseTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_parseTranslationUnit>>(
-          'clang_parseTranslationUnit');
-  late final _dart_clang_parseTranslationUnit _clang_parseTranslationUnit =
-      _clang_parseTranslationUnit_ptr
-          .asFunction<_dart_clang_parseTranslationUnit>();
+  late final _clang_parseTranslationUnit_ptr = _lookup<
+      ffi.NativeFunction<
+          CXTranslationUnit Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32,
+              ffi.Pointer<CXUnsavedFile>,
+              ffi.Uint32,
+              ffi.Uint32)>>('clang_parseTranslationUnit');
+  late final _clang_parseTranslationUnit =
+      _clang_parseTranslationUnit_ptr.asFunction<
+          CXTranslationUnit Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              int)>();
 
   /// Parse the given source file and the translation unit corresponding to that
   /// file.
   int clang_parseTranslationUnit2(
-    ffi.Pointer<ffi.Void> CIdx,
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
     int options,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
   ) {
     return _clang_parseTranslationUnit2(
       CIdx,
@@ -1383,25 +1477,41 @@
     );
   }
 
-  late final _clang_parseTranslationUnit2_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_parseTranslationUnit2>>(
-          'clang_parseTranslationUnit2');
-  late final _dart_clang_parseTranslationUnit2 _clang_parseTranslationUnit2 =
-      _clang_parseTranslationUnit2_ptr
-          .asFunction<_dart_clang_parseTranslationUnit2>();
+  late final _clang_parseTranslationUnit2_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32,
+              ffi.Pointer<CXUnsavedFile>,
+              ffi.Uint32,
+              ffi.Uint32,
+              ffi.Pointer<CXTranslationUnit>)>>('clang_parseTranslationUnit2');
+  late final _clang_parseTranslationUnit2 =
+      _clang_parseTranslationUnit2_ptr.asFunction<
+          int Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              int,
+              ffi.Pointer<CXTranslationUnit>)>();
 
   /// Same as clang_parseTranslationUnit2 but requires a full command line for
   /// command_line_args including argv[0]. This is useful if the standard
   /// library paths are relative to the binary.
   int clang_parseTranslationUnit2FullArgv(
-    ffi.Pointer<ffi.Void> CIdx,
+    CXIndex CIdx,
     ffi.Pointer<ffi.Int8> source_filename,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
     int options,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
   ) {
     return _clang_parseTranslationUnit2FullArgv(
       CIdx,
@@ -1415,17 +1525,33 @@
     );
   }
 
-  late final _clang_parseTranslationUnit2FullArgv_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_parseTranslationUnit2FullArgv>>(
-          'clang_parseTranslationUnit2FullArgv');
-  late final _dart_clang_parseTranslationUnit2FullArgv
-      _clang_parseTranslationUnit2FullArgv =
-      _clang_parseTranslationUnit2FullArgv_ptr
-          .asFunction<_dart_clang_parseTranslationUnit2FullArgv>();
+  late final _clang_parseTranslationUnit2FullArgv_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  CXIndex,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                  ffi.Int32,
+                  ffi.Pointer<CXUnsavedFile>,
+                  ffi.Uint32,
+                  ffi.Uint32,
+                  ffi.Pointer<CXTranslationUnit>)>>(
+      'clang_parseTranslationUnit2FullArgv');
+  late final _clang_parseTranslationUnit2FullArgv =
+      _clang_parseTranslationUnit2FullArgv_ptr.asFunction<
+          int Function(
+              CXIndex,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              int,
+              ffi.Pointer<CXTranslationUnit>)>();
 
   /// Returns the set of flags that is suitable for saving a translation unit.
   int clang_defaultSaveOptions(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
   ) {
     return _clang_defaultSaveOptions(
       TU,
@@ -1433,16 +1559,15 @@
   }
 
   late final _clang_defaultSaveOptions_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_defaultSaveOptions>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXTranslationUnit)>>(
           'clang_defaultSaveOptions');
-  late final _dart_clang_defaultSaveOptions _clang_defaultSaveOptions =
-      _clang_defaultSaveOptions_ptr
-          .asFunction<_dart_clang_defaultSaveOptions>();
+  late final _clang_defaultSaveOptions = _clang_defaultSaveOptions_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Saves a translation unit into a serialized representation of that
   /// translation unit on disk.
   int clang_saveTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<ffi.Int8> FileName,
     int options,
   ) {
@@ -1453,16 +1578,17 @@
     );
   }
 
-  late final _clang_saveTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_saveTranslationUnit>>(
-          'clang_saveTranslationUnit');
-  late final _dart_clang_saveTranslationUnit _clang_saveTranslationUnit =
-      _clang_saveTranslationUnit_ptr
-          .asFunction<_dart_clang_saveTranslationUnit>();
+  late final _clang_saveTranslationUnit_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(CXTranslationUnit, ffi.Pointer<ffi.Int8>,
+              ffi.Uint32)>>('clang_saveTranslationUnit');
+  late final _clang_saveTranslationUnit =
+      _clang_saveTranslationUnit_ptr.asFunction<
+          int Function(CXTranslationUnit, ffi.Pointer<ffi.Int8>, int)>();
 
   /// Suspend a translation unit in order to free memory associated with it.
   int clang_suspendTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_suspendTranslationUnit(
       arg0,
@@ -1470,15 +1596,14 @@
   }
 
   late final _clang_suspendTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_suspendTranslationUnit>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXTranslationUnit)>>(
           'clang_suspendTranslationUnit');
-  late final _dart_clang_suspendTranslationUnit _clang_suspendTranslationUnit =
-      _clang_suspendTranslationUnit_ptr
-          .asFunction<_dart_clang_suspendTranslationUnit>();
+  late final _clang_suspendTranslationUnit = _clang_suspendTranslationUnit_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Destroy the specified CXTranslationUnit object.
   void clang_disposeTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_disposeTranslationUnit(
       arg0,
@@ -1486,16 +1611,15 @@
   }
 
   late final _clang_disposeTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeTranslationUnit>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXTranslationUnit)>>(
           'clang_disposeTranslationUnit');
-  late final _dart_clang_disposeTranslationUnit _clang_disposeTranslationUnit =
-      _clang_disposeTranslationUnit_ptr
-          .asFunction<_dart_clang_disposeTranslationUnit>();
+  late final _clang_disposeTranslationUnit = _clang_disposeTranslationUnit_ptr
+      .asFunction<void Function(CXTranslationUnit)>();
 
   /// Returns the set of flags that is suitable for reparsing a translation
   /// unit.
   int clang_defaultReparseOptions(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
   ) {
     return _clang_defaultReparseOptions(
       TU,
@@ -1503,15 +1627,14 @@
   }
 
   late final _clang_defaultReparseOptions_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_defaultReparseOptions>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXTranslationUnit)>>(
           'clang_defaultReparseOptions');
-  late final _dart_clang_defaultReparseOptions _clang_defaultReparseOptions =
-      _clang_defaultReparseOptions_ptr
-          .asFunction<_dart_clang_defaultReparseOptions>();
+  late final _clang_defaultReparseOptions = _clang_defaultReparseOptions_ptr
+      .asFunction<int Function(CXTranslationUnit)>();
 
   /// Reparse the source files that produced this translation unit.
   int clang_reparseTranslationUnit(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     int num_unsaved_files,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int options,
@@ -1524,12 +1647,17 @@
     );
   }
 
-  late final _clang_reparseTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_reparseTranslationUnit>>(
-          'clang_reparseTranslationUnit');
-  late final _dart_clang_reparseTranslationUnit _clang_reparseTranslationUnit =
-      _clang_reparseTranslationUnit_ptr
-          .asFunction<_dart_clang_reparseTranslationUnit>();
+  late final _clang_reparseTranslationUnit_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXTranslationUnit,
+              ffi.Uint32,
+              ffi.Pointer<CXUnsavedFile>,
+              ffi.Uint32)>>('clang_reparseTranslationUnit');
+  late final _clang_reparseTranslationUnit =
+      _clang_reparseTranslationUnit_ptr.asFunction<
+          int Function(
+              CXTranslationUnit, int, ffi.Pointer<CXUnsavedFile>, int)>();
 
   /// Returns the human-readable null-terminated C string that represents the
   /// name of the memory category. This string should never be freed.
@@ -1542,28 +1670,26 @@
   }
 
   late final _clang_getTUResourceUsageName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTUResourceUsageName>>(
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(ffi.Int32)>>(
           'clang_getTUResourceUsageName');
-  late final _dart_clang_getTUResourceUsageName _clang_getTUResourceUsageName =
-      _clang_getTUResourceUsageName_ptr
-          .asFunction<_dart_clang_getTUResourceUsageName>();
+  late final _clang_getTUResourceUsageName = _clang_getTUResourceUsageName_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(int)>();
 
   /// Return the memory usage of a translation unit. This object should be
   /// released with clang_disposeCXTUResourceUsage().
   CXTUResourceUsage clang_getCXTUResourceUsage(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
   ) {
     return _clang_getCXTUResourceUsage(
       TU,
     );
   }
 
-  late final _clang_getCXTUResourceUsage_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCXTUResourceUsage>>(
-          'clang_getCXTUResourceUsage');
-  late final _dart_clang_getCXTUResourceUsage _clang_getCXTUResourceUsage =
-      _clang_getCXTUResourceUsage_ptr
-          .asFunction<_dart_clang_getCXTUResourceUsage>();
+  late final _clang_getCXTUResourceUsage_ptr = _lookup<
+          ffi.NativeFunction<CXTUResourceUsage Function(CXTranslationUnit)>>(
+      'clang_getCXTUResourceUsage');
+  late final _clang_getCXTUResourceUsage = _clang_getCXTUResourceUsage_ptr
+      .asFunction<CXTUResourceUsage Function(CXTranslationUnit)>();
 
   void clang_disposeCXTUResourceUsage(
     CXTUResourceUsage usage,
@@ -1574,15 +1700,15 @@
   }
 
   late final _clang_disposeCXTUResourceUsage_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeCXTUResourceUsage>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXTUResourceUsage)>>(
           'clang_disposeCXTUResourceUsage');
-  late final _dart_clang_disposeCXTUResourceUsage
-      _clang_disposeCXTUResourceUsage = _clang_disposeCXTUResourceUsage_ptr
-          .asFunction<_dart_clang_disposeCXTUResourceUsage>();
+  late final _clang_disposeCXTUResourceUsage =
+      _clang_disposeCXTUResourceUsage_ptr
+          .asFunction<void Function(CXTUResourceUsage)>();
 
   /// Get target information for this translation unit.
-  ffi.Pointer<CXTargetInfoImpl> clang_getTranslationUnitTargetInfo(
-    ffi.Pointer<CXTranslationUnitImpl> CTUnit,
+  CXTargetInfo clang_getTranslationUnitTargetInfo(
+    CXTranslationUnit CTUnit,
   ) {
     return _clang_getTranslationUnitTargetInfo(
       CTUnit,
@@ -1590,16 +1716,15 @@
   }
 
   late final _clang_getTranslationUnitTargetInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTranslationUnitTargetInfo>>(
+      _lookup<ffi.NativeFunction<CXTargetInfo Function(CXTranslationUnit)>>(
           'clang_getTranslationUnitTargetInfo');
-  late final _dart_clang_getTranslationUnitTargetInfo
-      _clang_getTranslationUnitTargetInfo =
+  late final _clang_getTranslationUnitTargetInfo =
       _clang_getTranslationUnitTargetInfo_ptr
-          .asFunction<_dart_clang_getTranslationUnitTargetInfo>();
+          .asFunction<CXTargetInfo Function(CXTranslationUnit)>();
 
   /// Destroy the CXTargetInfo object.
   void clang_TargetInfo_dispose(
-    ffi.Pointer<CXTargetInfoImpl> Info,
+    CXTargetInfo Info,
   ) {
     return _clang_TargetInfo_dispose(
       Info,
@@ -1607,15 +1732,14 @@
   }
 
   late final _clang_TargetInfo_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_TargetInfo_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXTargetInfo)>>(
           'clang_TargetInfo_dispose');
-  late final _dart_clang_TargetInfo_dispose _clang_TargetInfo_dispose =
-      _clang_TargetInfo_dispose_ptr
-          .asFunction<_dart_clang_TargetInfo_dispose>();
+  late final _clang_TargetInfo_dispose =
+      _clang_TargetInfo_dispose_ptr.asFunction<void Function(CXTargetInfo)>();
 
   /// Get the normalized target triple as a string.
   CXString clang_TargetInfo_getTriple(
-    ffi.Pointer<CXTargetInfoImpl> Info,
+    CXTargetInfo Info,
   ) {
     return _clang_TargetInfo_getTriple(
       Info,
@@ -1623,15 +1747,14 @@
   }
 
   late final _clang_TargetInfo_getTriple_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_TargetInfo_getTriple>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXTargetInfo)>>(
           'clang_TargetInfo_getTriple');
-  late final _dart_clang_TargetInfo_getTriple _clang_TargetInfo_getTriple =
-      _clang_TargetInfo_getTriple_ptr
-          .asFunction<_dart_clang_TargetInfo_getTriple>();
+  late final _clang_TargetInfo_getTriple = _clang_TargetInfo_getTriple_ptr
+      .asFunction<CXString Function(CXTargetInfo)>();
 
   /// Get the pointer width of the target in bits.
   int clang_TargetInfo_getPointerWidth(
-    ffi.Pointer<CXTargetInfoImpl> Info,
+    CXTargetInfo Info,
   ) {
     return _clang_TargetInfo_getPointerWidth(
       Info,
@@ -1639,11 +1762,11 @@
   }
 
   late final _clang_TargetInfo_getPointerWidth_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_TargetInfo_getPointerWidth>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXTargetInfo)>>(
           'clang_TargetInfo_getPointerWidth');
-  late final _dart_clang_TargetInfo_getPointerWidth
-      _clang_TargetInfo_getPointerWidth = _clang_TargetInfo_getPointerWidth_ptr
-          .asFunction<_dart_clang_TargetInfo_getPointerWidth>();
+  late final _clang_TargetInfo_getPointerWidth =
+      _clang_TargetInfo_getPointerWidth_ptr
+          .asFunction<int Function(CXTargetInfo)>();
 
   /// Retrieve the NULL cursor, which represents no entity.
   CXCursor clang_getNullCursor() {
@@ -1651,14 +1774,13 @@
   }
 
   late final _clang_getNullCursor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNullCursor>>(
-          'clang_getNullCursor');
-  late final _dart_clang_getNullCursor _clang_getNullCursor =
-      _clang_getNullCursor_ptr.asFunction<_dart_clang_getNullCursor>();
+      _lookup<ffi.NativeFunction<CXCursor Function()>>('clang_getNullCursor');
+  late final _clang_getNullCursor =
+      _clang_getNullCursor_ptr.asFunction<CXCursor Function()>();
 
   /// Retrieve the cursor that represents the given translation unit.
   CXCursor clang_getTranslationUnitCursor(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
   ) {
     return _clang_getTranslationUnitCursor(
       arg0,
@@ -1666,11 +1788,11 @@
   }
 
   late final _clang_getTranslationUnitCursor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTranslationUnitCursor>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXTranslationUnit)>>(
           'clang_getTranslationUnitCursor');
-  late final _dart_clang_getTranslationUnitCursor
-      _clang_getTranslationUnitCursor = _clang_getTranslationUnitCursor_ptr
-          .asFunction<_dart_clang_getTranslationUnitCursor>();
+  late final _clang_getTranslationUnitCursor =
+      _clang_getTranslationUnitCursor_ptr
+          .asFunction<CXCursor Function(CXTranslationUnit)>();
 
   /// Determine whether two cursors are equivalent.
   int clang_equalCursors(
@@ -1684,9 +1806,10 @@
   }
 
   late final _clang_equalCursors_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_equalCursors>>('clang_equalCursors');
-  late final _dart_clang_equalCursors _clang_equalCursors =
-      _clang_equalCursors_ptr.asFunction<_dart_clang_equalCursors>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor, CXCursor)>>(
+          'clang_equalCursors');
+  late final _clang_equalCursors =
+      _clang_equalCursors_ptr.asFunction<int Function(CXCursor, CXCursor)>();
 
   /// Returns non-zero if cursor is null.
   int clang_Cursor_isNull(
@@ -1698,10 +1821,10 @@
   }
 
   late final _clang_Cursor_isNull_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isNull>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_isNull');
-  late final _dart_clang_Cursor_isNull _clang_Cursor_isNull =
-      _clang_Cursor_isNull_ptr.asFunction<_dart_clang_Cursor_isNull>();
+  late final _clang_Cursor_isNull =
+      _clang_Cursor_isNull_ptr.asFunction<int Function(CXCursor)>();
 
   /// Compute a hash value for the given cursor.
   int clang_hashCursor(
@@ -1713,9 +1836,10 @@
   }
 
   late final _clang_hashCursor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_hashCursor>>('clang_hashCursor');
-  late final _dart_clang_hashCursor _clang_hashCursor =
-      _clang_hashCursor_ptr.asFunction<_dart_clang_hashCursor>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
+          'clang_hashCursor');
+  late final _clang_hashCursor =
+      _clang_hashCursor_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the kind of the given cursor.
   int clang_getCursorKind(
@@ -1727,10 +1851,10 @@
   }
 
   late final _clang_getCursorKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorKind');
-  late final _dart_clang_getCursorKind _clang_getCursorKind =
-      _clang_getCursorKind_ptr.asFunction<_dart_clang_getCursorKind>();
+  late final _clang_getCursorKind =
+      _clang_getCursorKind_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor kind represents a declaration.
   int clang_isDeclaration(
@@ -1742,10 +1866,10 @@
   }
 
   late final _clang_isDeclaration_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isDeclaration>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
           'clang_isDeclaration');
-  late final _dart_clang_isDeclaration _clang_isDeclaration =
-      _clang_isDeclaration_ptr.asFunction<_dart_clang_isDeclaration>();
+  late final _clang_isDeclaration =
+      _clang_isDeclaration_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given declaration is invalid.
   int clang_isInvalidDeclaration(
@@ -1757,11 +1881,10 @@
   }
 
   late final _clang_isInvalidDeclaration_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isInvalidDeclaration>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_isInvalidDeclaration');
-  late final _dart_clang_isInvalidDeclaration _clang_isInvalidDeclaration =
-      _clang_isInvalidDeclaration_ptr
-          .asFunction<_dart_clang_isInvalidDeclaration>();
+  late final _clang_isInvalidDeclaration =
+      _clang_isInvalidDeclaration_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor kind represents a simple reference.
   int clang_isReference(
@@ -1773,9 +1896,10 @@
   }
 
   late final _clang_isReference_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isReference>>('clang_isReference');
-  late final _dart_clang_isReference _clang_isReference =
-      _clang_isReference_ptr.asFunction<_dart_clang_isReference>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
+          'clang_isReference');
+  late final _clang_isReference =
+      _clang_isReference_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents an expression.
   int clang_isExpression(
@@ -1787,9 +1911,10 @@
   }
 
   late final _clang_isExpression_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isExpression>>('clang_isExpression');
-  late final _dart_clang_isExpression _clang_isExpression =
-      _clang_isExpression_ptr.asFunction<_dart_clang_isExpression>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
+          'clang_isExpression');
+  late final _clang_isExpression =
+      _clang_isExpression_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents a statement.
   int clang_isStatement(
@@ -1801,9 +1926,10 @@
   }
 
   late final _clang_isStatement_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isStatement>>('clang_isStatement');
-  late final _dart_clang_isStatement _clang_isStatement =
-      _clang_isStatement_ptr.asFunction<_dart_clang_isStatement>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
+          'clang_isStatement');
+  late final _clang_isStatement =
+      _clang_isStatement_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents an attribute.
   int clang_isAttribute(
@@ -1815,9 +1941,10 @@
   }
 
   late final _clang_isAttribute_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isAttribute>>('clang_isAttribute');
-  late final _dart_clang_isAttribute _clang_isAttribute =
-      _clang_isAttribute_ptr.asFunction<_dart_clang_isAttribute>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
+          'clang_isAttribute');
+  late final _clang_isAttribute =
+      _clang_isAttribute_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor has any attributes.
   int clang_Cursor_hasAttrs(
@@ -1829,10 +1956,10 @@
   }
 
   late final _clang_Cursor_hasAttrs_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_hasAttrs>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_hasAttrs');
-  late final _dart_clang_Cursor_hasAttrs _clang_Cursor_hasAttrs =
-      _clang_Cursor_hasAttrs_ptr.asFunction<_dart_clang_Cursor_hasAttrs>();
+  late final _clang_Cursor_hasAttrs =
+      _clang_Cursor_hasAttrs_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor kind represents an invalid cursor.
   int clang_isInvalid(
@@ -1844,9 +1971,10 @@
   }
 
   late final _clang_isInvalid_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isInvalid>>('clang_isInvalid');
-  late final _dart_clang_isInvalid _clang_isInvalid =
-      _clang_isInvalid_ptr.asFunction<_dart_clang_isInvalid>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
+          'clang_isInvalid');
+  late final _clang_isInvalid =
+      _clang_isInvalid_ptr.asFunction<int Function(int)>();
 
   /// Determine whether the given cursor kind represents a translation unit.
   int clang_isTranslationUnit(
@@ -1858,10 +1986,10 @@
   }
 
   late final _clang_isTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isTranslationUnit>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
           'clang_isTranslationUnit');
-  late final _dart_clang_isTranslationUnit _clang_isTranslationUnit =
-      _clang_isTranslationUnit_ptr.asFunction<_dart_clang_isTranslationUnit>();
+  late final _clang_isTranslationUnit =
+      _clang_isTranslationUnit_ptr.asFunction<int Function(int)>();
 
   /// * Determine whether the given cursor represents a preprocessing element,
   /// such as a preprocessor directive or macro instantiation.
@@ -1874,10 +2002,10 @@
   }
 
   late final _clang_isPreprocessing_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isPreprocessing>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
           'clang_isPreprocessing');
-  late final _dart_clang_isPreprocessing _clang_isPreprocessing =
-      _clang_isPreprocessing_ptr.asFunction<_dart_clang_isPreprocessing>();
+  late final _clang_isPreprocessing =
+      _clang_isPreprocessing_ptr.asFunction<int Function(int)>();
 
   /// * Determine whether the given cursor represents a currently unexposed
   /// piece of the AST (e.g., CXCursor_UnexposedStmt).
@@ -1890,9 +2018,10 @@
   }
 
   late final _clang_isUnexposed_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isUnexposed>>('clang_isUnexposed');
-  late final _dart_clang_isUnexposed _clang_isUnexposed =
-      _clang_isUnexposed_ptr.asFunction<_dart_clang_isUnexposed>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Int32)>>(
+          'clang_isUnexposed');
+  late final _clang_isUnexposed =
+      _clang_isUnexposed_ptr.asFunction<int Function(int)>();
 
   /// Determine the linkage of the entity referred to by a given cursor.
   int clang_getCursorLinkage(
@@ -1904,10 +2033,10 @@
   }
 
   late final _clang_getCursorLinkage_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorLinkage>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorLinkage');
-  late final _dart_clang_getCursorLinkage _clang_getCursorLinkage =
-      _clang_getCursorLinkage_ptr.asFunction<_dart_clang_getCursorLinkage>();
+  late final _clang_getCursorLinkage =
+      _clang_getCursorLinkage_ptr.asFunction<int Function(CXCursor)>();
 
   /// Describe the visibility of the entity referred to by a cursor.
   int clang_getCursorVisibility(
@@ -1919,11 +2048,10 @@
   }
 
   late final _clang_getCursorVisibility_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorVisibility>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorVisibility');
-  late final _dart_clang_getCursorVisibility _clang_getCursorVisibility =
-      _clang_getCursorVisibility_ptr
-          .asFunction<_dart_clang_getCursorVisibility>();
+  late final _clang_getCursorVisibility =
+      _clang_getCursorVisibility_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the availability of the entity that this cursor refers to,
   /// taking the current target platform into account.
@@ -1936,11 +2064,10 @@
   }
 
   late final _clang_getCursorAvailability_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorAvailability>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorAvailability');
-  late final _dart_clang_getCursorAvailability _clang_getCursorAvailability =
-      _clang_getCursorAvailability_ptr
-          .asFunction<_dart_clang_getCursorAvailability>();
+  late final _clang_getCursorAvailability =
+      _clang_getCursorAvailability_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the availability of the entity that this cursor refers to on any
   /// platforms for which availability information is known.
@@ -1964,13 +2091,26 @@
     );
   }
 
-  late final _clang_getCursorPlatformAvailability_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorPlatformAvailability>>(
-          'clang_getCursorPlatformAvailability');
-  late final _dart_clang_getCursorPlatformAvailability
-      _clang_getCursorPlatformAvailability =
-      _clang_getCursorPlatformAvailability_ptr
-          .asFunction<_dart_clang_getCursorPlatformAvailability>();
+  late final _clang_getCursorPlatformAvailability_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXCursor,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<CXPlatformAvailability>,
+              ffi.Int32)>>('clang_getCursorPlatformAvailability');
+  late final _clang_getCursorPlatformAvailability =
+      _clang_getCursorPlatformAvailability_ptr.asFunction<
+          int Function(
+              CXCursor,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<CXPlatformAvailability>,
+              int)>();
 
   /// Free the memory associated with a CXPlatformAvailability structure.
   void clang_disposeCXPlatformAvailability(
@@ -1981,13 +2121,13 @@
     );
   }
 
-  late final _clang_disposeCXPlatformAvailability_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeCXPlatformAvailability>>(
-          'clang_disposeCXPlatformAvailability');
-  late final _dart_clang_disposeCXPlatformAvailability
-      _clang_disposeCXPlatformAvailability =
+  late final _clang_disposeCXPlatformAvailability_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<CXPlatformAvailability>)>>(
+      'clang_disposeCXPlatformAvailability');
+  late final _clang_disposeCXPlatformAvailability =
       _clang_disposeCXPlatformAvailability_ptr
-          .asFunction<_dart_clang_disposeCXPlatformAvailability>();
+          .asFunction<void Function(ffi.Pointer<CXPlatformAvailability>)>();
 
   /// Determine the "language" of the entity referred to by a given cursor.
   int clang_getCursorLanguage(
@@ -1999,10 +2139,10 @@
   }
 
   late final _clang_getCursorLanguage_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorLanguage>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorLanguage');
-  late final _dart_clang_getCursorLanguage _clang_getCursorLanguage =
-      _clang_getCursorLanguage_ptr.asFunction<_dart_clang_getCursorLanguage>();
+  late final _clang_getCursorLanguage =
+      _clang_getCursorLanguage_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the "thread-local storage (TLS) kind" of the declaration
   /// referred to by a cursor.
@@ -2015,13 +2155,13 @@
   }
 
   late final _clang_getCursorTLSKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorTLSKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorTLSKind');
-  late final _dart_clang_getCursorTLSKind _clang_getCursorTLSKind =
-      _clang_getCursorTLSKind_ptr.asFunction<_dart_clang_getCursorTLSKind>();
+  late final _clang_getCursorTLSKind =
+      _clang_getCursorTLSKind_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the translation unit that a cursor originated from.
-  ffi.Pointer<CXTranslationUnitImpl> clang_Cursor_getTranslationUnit(
+  CXTranslationUnit clang_Cursor_getTranslationUnit(
     CXCursor arg0,
   ) {
     return _clang_Cursor_getTranslationUnit(
@@ -2030,26 +2170,26 @@
   }
 
   late final _clang_Cursor_getTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getTranslationUnit>>(
+      _lookup<ffi.NativeFunction<CXTranslationUnit Function(CXCursor)>>(
           'clang_Cursor_getTranslationUnit');
-  late final _dart_clang_Cursor_getTranslationUnit
-      _clang_Cursor_getTranslationUnit = _clang_Cursor_getTranslationUnit_ptr
-          .asFunction<_dart_clang_Cursor_getTranslationUnit>();
+  late final _clang_Cursor_getTranslationUnit =
+      _clang_Cursor_getTranslationUnit_ptr
+          .asFunction<CXTranslationUnit Function(CXCursor)>();
 
   /// Creates an empty CXCursorSet.
-  ffi.Pointer<CXCursorSetImpl> clang_createCXCursorSet() {
+  CXCursorSet clang_createCXCursorSet() {
     return _clang_createCXCursorSet();
   }
 
   late final _clang_createCXCursorSet_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_createCXCursorSet>>(
+      _lookup<ffi.NativeFunction<CXCursorSet Function()>>(
           'clang_createCXCursorSet');
-  late final _dart_clang_createCXCursorSet _clang_createCXCursorSet =
-      _clang_createCXCursorSet_ptr.asFunction<_dart_clang_createCXCursorSet>();
+  late final _clang_createCXCursorSet =
+      _clang_createCXCursorSet_ptr.asFunction<CXCursorSet Function()>();
 
   /// Disposes a CXCursorSet and releases its associated memory.
   void clang_disposeCXCursorSet(
-    ffi.Pointer<CXCursorSetImpl> cset,
+    CXCursorSet cset,
   ) {
     return _clang_disposeCXCursorSet(
       cset,
@@ -2057,15 +2197,14 @@
   }
 
   late final _clang_disposeCXCursorSet_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeCXCursorSet>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXCursorSet)>>(
           'clang_disposeCXCursorSet');
-  late final _dart_clang_disposeCXCursorSet _clang_disposeCXCursorSet =
-      _clang_disposeCXCursorSet_ptr
-          .asFunction<_dart_clang_disposeCXCursorSet>();
+  late final _clang_disposeCXCursorSet =
+      _clang_disposeCXCursorSet_ptr.asFunction<void Function(CXCursorSet)>();
 
   /// Queries a CXCursorSet to see if it contains a specific CXCursor.
   int clang_CXCursorSet_contains(
-    ffi.Pointer<CXCursorSetImpl> cset,
+    CXCursorSet cset,
     CXCursor cursor,
   ) {
     return _clang_CXCursorSet_contains(
@@ -2075,15 +2214,14 @@
   }
 
   late final _clang_CXCursorSet_contains_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXCursorSet_contains>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursorSet, CXCursor)>>(
           'clang_CXCursorSet_contains');
-  late final _dart_clang_CXCursorSet_contains _clang_CXCursorSet_contains =
-      _clang_CXCursorSet_contains_ptr
-          .asFunction<_dart_clang_CXCursorSet_contains>();
+  late final _clang_CXCursorSet_contains = _clang_CXCursorSet_contains_ptr
+      .asFunction<int Function(CXCursorSet, CXCursor)>();
 
   /// Inserts a CXCursor into a CXCursorSet.
   int clang_CXCursorSet_insert(
-    ffi.Pointer<CXCursorSetImpl> cset,
+    CXCursorSet cset,
     CXCursor cursor,
   ) {
     return _clang_CXCursorSet_insert(
@@ -2093,11 +2231,10 @@
   }
 
   late final _clang_CXCursorSet_insert_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXCursorSet_insert>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursorSet, CXCursor)>>(
           'clang_CXCursorSet_insert');
-  late final _dart_clang_CXCursorSet_insert _clang_CXCursorSet_insert =
-      _clang_CXCursorSet_insert_ptr
-          .asFunction<_dart_clang_CXCursorSet_insert>();
+  late final _clang_CXCursorSet_insert = _clang_CXCursorSet_insert_ptr
+      .asFunction<int Function(CXCursorSet, CXCursor)>();
 
   /// Determine the semantic parent of the given cursor.
   CXCursor clang_getCursorSemanticParent(
@@ -2109,11 +2246,10 @@
   }
 
   late final _clang_getCursorSemanticParent_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorSemanticParent>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor)>>(
           'clang_getCursorSemanticParent');
-  late final _dart_clang_getCursorSemanticParent
-      _clang_getCursorSemanticParent = _clang_getCursorSemanticParent_ptr
-          .asFunction<_dart_clang_getCursorSemanticParent>();
+  late final _clang_getCursorSemanticParent = _clang_getCursorSemanticParent_ptr
+      .asFunction<CXCursor Function(CXCursor)>();
 
   /// Determine the lexical parent of the given cursor.
   CXCursor clang_getCursorLexicalParent(
@@ -2125,11 +2261,10 @@
   }
 
   late final _clang_getCursorLexicalParent_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorLexicalParent>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor)>>(
           'clang_getCursorLexicalParent');
-  late final _dart_clang_getCursorLexicalParent _clang_getCursorLexicalParent =
-      _clang_getCursorLexicalParent_ptr
-          .asFunction<_dart_clang_getCursorLexicalParent>();
+  late final _clang_getCursorLexicalParent = _clang_getCursorLexicalParent_ptr
+      .asFunction<CXCursor Function(CXCursor)>();
 
   /// Determine the set of methods that are overridden by the given method.
   void clang_getOverriddenCursors(
@@ -2144,12 +2279,14 @@
     );
   }
 
-  late final _clang_getOverriddenCursors_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getOverriddenCursors>>(
-          'clang_getOverriddenCursors');
-  late final _dart_clang_getOverriddenCursors _clang_getOverriddenCursors =
-      _clang_getOverriddenCursors_ptr
-          .asFunction<_dart_clang_getOverriddenCursors>();
+  late final _clang_getOverriddenCursors_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(CXCursor, ffi.Pointer<ffi.Pointer<CXCursor>>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_getOverriddenCursors');
+  late final _clang_getOverriddenCursors =
+      _clang_getOverriddenCursors_ptr.asFunction<
+          void Function(CXCursor, ffi.Pointer<ffi.Pointer<CXCursor>>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Free the set of overridden cursors returned by
   /// clang_getOverriddenCursors().
@@ -2162,15 +2299,15 @@
   }
 
   late final _clang_disposeOverriddenCursors_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeOverriddenCursors>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<CXCursor>)>>(
           'clang_disposeOverriddenCursors');
-  late final _dart_clang_disposeOverriddenCursors
-      _clang_disposeOverriddenCursors = _clang_disposeOverriddenCursors_ptr
-          .asFunction<_dart_clang_disposeOverriddenCursors>();
+  late final _clang_disposeOverriddenCursors =
+      _clang_disposeOverriddenCursors_ptr
+          .asFunction<void Function(ffi.Pointer<CXCursor>)>();
 
   /// Retrieve the file that is included by the given inclusion directive
   /// cursor.
-  ffi.Pointer<ffi.Void> clang_getIncludedFile(
+  CXFile clang_getIncludedFile(
     CXCursor cursor,
   ) {
     return _clang_getIncludedFile(
@@ -2179,15 +2316,15 @@
   }
 
   late final _clang_getIncludedFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getIncludedFile>>(
+      _lookup<ffi.NativeFunction<CXFile Function(CXCursor)>>(
           'clang_getIncludedFile');
-  late final _dart_clang_getIncludedFile _clang_getIncludedFile =
-      _clang_getIncludedFile_ptr.asFunction<_dart_clang_getIncludedFile>();
+  late final _clang_getIncludedFile =
+      _clang_getIncludedFile_ptr.asFunction<CXFile Function(CXCursor)>();
 
   /// Map a source location to the cursor that describes the entity at that
   /// location in the source code.
   CXCursor clang_getCursor(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXSourceLocation arg1,
   ) {
     return _clang_getCursor(
@@ -2196,10 +2333,12 @@
     );
   }
 
-  late final _clang_getCursor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursor>>('clang_getCursor');
-  late final _dart_clang_getCursor _clang_getCursor =
-      _clang_getCursor_ptr.asFunction<_dart_clang_getCursor>();
+  late final _clang_getCursor_ptr = _lookup<
+      ffi.NativeFunction<
+          CXCursor Function(
+              CXTranslationUnit, CXSourceLocation)>>('clang_getCursor');
+  late final _clang_getCursor = _clang_getCursor_ptr
+      .asFunction<CXCursor Function(CXTranslationUnit, CXSourceLocation)>();
 
   /// Retrieve the physical location of the source constructor referenced by the
   /// given cursor.
@@ -2212,10 +2351,10 @@
   }
 
   late final _clang_getCursorLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorLocation>>(
+      _lookup<ffi.NativeFunction<CXSourceLocation Function(CXCursor)>>(
           'clang_getCursorLocation');
-  late final _dart_clang_getCursorLocation _clang_getCursorLocation =
-      _clang_getCursorLocation_ptr.asFunction<_dart_clang_getCursorLocation>();
+  late final _clang_getCursorLocation = _clang_getCursorLocation_ptr
+      .asFunction<CXSourceLocation Function(CXCursor)>();
 
   /// Retrieve the physical extent of the source construct referenced by the
   /// given cursor.
@@ -2228,10 +2367,10 @@
   }
 
   late final _clang_getCursorExtent_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorExtent>>(
+      _lookup<ffi.NativeFunction<CXSourceRange Function(CXCursor)>>(
           'clang_getCursorExtent');
-  late final _dart_clang_getCursorExtent _clang_getCursorExtent =
-      _clang_getCursorExtent_ptr.asFunction<_dart_clang_getCursorExtent>();
+  late final _clang_getCursorExtent =
+      _clang_getCursorExtent_ptr.asFunction<CXSourceRange Function(CXCursor)>();
 
   /// Retrieve the type of a CXCursor (if any).
   CXType clang_getCursorType(
@@ -2243,10 +2382,10 @@
   }
 
   late final _clang_getCursorType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_getCursorType');
-  late final _dart_clang_getCursorType _clang_getCursorType =
-      _clang_getCursorType_ptr.asFunction<_dart_clang_getCursorType>();
+  late final _clang_getCursorType =
+      _clang_getCursorType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Pretty-print the underlying type using the rules of the language of the
   /// translation unit from which it came.
@@ -2259,10 +2398,10 @@
   }
 
   late final _clang_getTypeSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypeSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXType)>>(
           'clang_getTypeSpelling');
-  late final _dart_clang_getTypeSpelling _clang_getTypeSpelling =
-      _clang_getTypeSpelling_ptr.asFunction<_dart_clang_getTypeSpelling>();
+  late final _clang_getTypeSpelling =
+      _clang_getTypeSpelling_ptr.asFunction<CXString Function(CXType)>();
 
   /// Retrieve the underlying type of a typedef declaration.
   CXType clang_getTypedefDeclUnderlyingType(
@@ -2274,12 +2413,11 @@
   }
 
   late final _clang_getTypedefDeclUnderlyingType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypedefDeclUnderlyingType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_getTypedefDeclUnderlyingType');
-  late final _dart_clang_getTypedefDeclUnderlyingType
-      _clang_getTypedefDeclUnderlyingType =
+  late final _clang_getTypedefDeclUnderlyingType =
       _clang_getTypedefDeclUnderlyingType_ptr
-          .asFunction<_dart_clang_getTypedefDeclUnderlyingType>();
+          .asFunction<CXType Function(CXCursor)>();
 
   /// Retrieve the integer type of an enum declaration.
   CXType clang_getEnumDeclIntegerType(
@@ -2291,11 +2429,10 @@
   }
 
   late final _clang_getEnumDeclIntegerType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getEnumDeclIntegerType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_getEnumDeclIntegerType');
-  late final _dart_clang_getEnumDeclIntegerType _clang_getEnumDeclIntegerType =
-      _clang_getEnumDeclIntegerType_ptr
-          .asFunction<_dart_clang_getEnumDeclIntegerType>();
+  late final _clang_getEnumDeclIntegerType =
+      _clang_getEnumDeclIntegerType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Retrieve the integer value of an enum constant declaration as a signed
   /// long long.
@@ -2308,11 +2445,10 @@
   }
 
   late final _clang_getEnumConstantDeclValue_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getEnumConstantDeclValue>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXCursor)>>(
           'clang_getEnumConstantDeclValue');
-  late final _dart_clang_getEnumConstantDeclValue
-      _clang_getEnumConstantDeclValue = _clang_getEnumConstantDeclValue_ptr
-          .asFunction<_dart_clang_getEnumConstantDeclValue>();
+  late final _clang_getEnumConstantDeclValue =
+      _clang_getEnumConstantDeclValue_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the integer value of an enum constant declaration as an unsigned
   /// long long.
@@ -2325,12 +2461,11 @@
   }
 
   late final _clang_getEnumConstantDeclUnsignedValue_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getEnumConstantDeclUnsignedValue>>(
+      _lookup<ffi.NativeFunction<ffi.Uint64 Function(CXCursor)>>(
           'clang_getEnumConstantDeclUnsignedValue');
-  late final _dart_clang_getEnumConstantDeclUnsignedValue
-      _clang_getEnumConstantDeclUnsignedValue =
+  late final _clang_getEnumConstantDeclUnsignedValue =
       _clang_getEnumConstantDeclUnsignedValue_ptr
-          .asFunction<_dart_clang_getEnumConstantDeclUnsignedValue>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Retrieve the bit width of a bit field declaration as an integer.
   int clang_getFieldDeclBitWidth(
@@ -2342,11 +2477,10 @@
   }
 
   late final _clang_getFieldDeclBitWidth_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFieldDeclBitWidth>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getFieldDeclBitWidth');
-  late final _dart_clang_getFieldDeclBitWidth _clang_getFieldDeclBitWidth =
-      _clang_getFieldDeclBitWidth_ptr
-          .asFunction<_dart_clang_getFieldDeclBitWidth>();
+  late final _clang_getFieldDeclBitWidth =
+      _clang_getFieldDeclBitWidth_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the number of non-variadic arguments associated with a given
   /// cursor.
@@ -2359,11 +2493,10 @@
   }
 
   late final _clang_Cursor_getNumArguments_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getNumArguments>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_getNumArguments');
-  late final _dart_clang_Cursor_getNumArguments _clang_Cursor_getNumArguments =
-      _clang_Cursor_getNumArguments_ptr
-          .asFunction<_dart_clang_Cursor_getNumArguments>();
+  late final _clang_Cursor_getNumArguments =
+      _clang_Cursor_getNumArguments_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the argument cursor of a function or method.
   CXCursor clang_Cursor_getArgument(
@@ -2377,11 +2510,10 @@
   }
 
   late final _clang_Cursor_getArgument_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getArgument>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor, ffi.Uint32)>>(
           'clang_Cursor_getArgument');
-  late final _dart_clang_Cursor_getArgument _clang_Cursor_getArgument =
-      _clang_Cursor_getArgument_ptr
-          .asFunction<_dart_clang_Cursor_getArgument>();
+  late final _clang_Cursor_getArgument = _clang_Cursor_getArgument_ptr
+      .asFunction<CXCursor Function(CXCursor, int)>();
 
   /// Returns the number of template args of a function decl representing a
   /// template specialization.
@@ -2394,12 +2526,11 @@
   }
 
   late final _clang_Cursor_getNumTemplateArguments_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getNumTemplateArguments>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_getNumTemplateArguments');
-  late final _dart_clang_Cursor_getNumTemplateArguments
-      _clang_Cursor_getNumTemplateArguments =
+  late final _clang_Cursor_getNumTemplateArguments =
       _clang_Cursor_getNumTemplateArguments_ptr
-          .asFunction<_dart_clang_Cursor_getNumTemplateArguments>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Retrieve the kind of the I'th template argument of the CXCursor C.
   int clang_Cursor_getTemplateArgumentKind(
@@ -2413,12 +2544,11 @@
   }
 
   late final _clang_Cursor_getTemplateArgumentKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getTemplateArgumentKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor, ffi.Uint32)>>(
           'clang_Cursor_getTemplateArgumentKind');
-  late final _dart_clang_Cursor_getTemplateArgumentKind
-      _clang_Cursor_getTemplateArgumentKind =
+  late final _clang_Cursor_getTemplateArgumentKind =
       _clang_Cursor_getTemplateArgumentKind_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentKind>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Retrieve a CXType representing the type of a TemplateArgument of a
   /// function decl representing a template specialization.
@@ -2433,12 +2563,11 @@
   }
 
   late final _clang_Cursor_getTemplateArgumentType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getTemplateArgumentType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor, ffi.Uint32)>>(
           'clang_Cursor_getTemplateArgumentType');
-  late final _dart_clang_Cursor_getTemplateArgumentType
-      _clang_Cursor_getTemplateArgumentType =
+  late final _clang_Cursor_getTemplateArgumentType =
       _clang_Cursor_getTemplateArgumentType_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentType>();
+          .asFunction<CXType Function(CXCursor, int)>();
 
   /// Retrieve the value of an Integral TemplateArgument (of a function decl
   /// representing a template specialization) as a signed long long.
@@ -2453,12 +2582,11 @@
   }
 
   late final _clang_Cursor_getTemplateArgumentValue_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getTemplateArgumentValue>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXCursor, ffi.Uint32)>>(
           'clang_Cursor_getTemplateArgumentValue');
-  late final _dart_clang_Cursor_getTemplateArgumentValue
-      _clang_Cursor_getTemplateArgumentValue =
+  late final _clang_Cursor_getTemplateArgumentValue =
       _clang_Cursor_getTemplateArgumentValue_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentValue>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Retrieve the value of an Integral TemplateArgument (of a function decl
   /// representing a template specialization) as an unsigned long long.
@@ -2472,13 +2600,12 @@
     );
   }
 
-  late final _clang_Cursor_getTemplateArgumentUnsignedValue_ptr = _lookup<
-          ffi.NativeFunction<_c_clang_Cursor_getTemplateArgumentUnsignedValue>>(
-      'clang_Cursor_getTemplateArgumentUnsignedValue');
-  late final _dart_clang_Cursor_getTemplateArgumentUnsignedValue
-      _clang_Cursor_getTemplateArgumentUnsignedValue =
+  late final _clang_Cursor_getTemplateArgumentUnsignedValue_ptr =
+      _lookup<ffi.NativeFunction<ffi.Uint64 Function(CXCursor, ffi.Uint32)>>(
+          'clang_Cursor_getTemplateArgumentUnsignedValue');
+  late final _clang_Cursor_getTemplateArgumentUnsignedValue =
       _clang_Cursor_getTemplateArgumentUnsignedValue_ptr
-          .asFunction<_dart_clang_Cursor_getTemplateArgumentUnsignedValue>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Determine whether two CXTypes represent the same type.
   int clang_equalTypes(
@@ -2492,9 +2619,10 @@
   }
 
   late final _clang_equalTypes_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_equalTypes>>('clang_equalTypes');
-  late final _dart_clang_equalTypes _clang_equalTypes =
-      _clang_equalTypes_ptr.asFunction<_dart_clang_equalTypes>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType, CXType)>>(
+          'clang_equalTypes');
+  late final _clang_equalTypes =
+      _clang_equalTypes_ptr.asFunction<int Function(CXType, CXType)>();
 
   /// Return the canonical type for a CXType.
   CXType clang_getCanonicalType(
@@ -2506,10 +2634,10 @@
   }
 
   late final _clang_getCanonicalType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCanonicalType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getCanonicalType');
-  late final _dart_clang_getCanonicalType _clang_getCanonicalType =
-      _clang_getCanonicalType_ptr.asFunction<_dart_clang_getCanonicalType>();
+  late final _clang_getCanonicalType =
+      _clang_getCanonicalType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Determine whether a CXType has the "const" qualifier set, without looking
   /// through typedefs that may have added "const" at a different level.
@@ -2522,11 +2650,10 @@
   }
 
   late final _clang_isConstQualifiedType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isConstQualifiedType>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_isConstQualifiedType');
-  late final _dart_clang_isConstQualifiedType _clang_isConstQualifiedType =
-      _clang_isConstQualifiedType_ptr
-          .asFunction<_dart_clang_isConstQualifiedType>();
+  late final _clang_isConstQualifiedType =
+      _clang_isConstQualifiedType_ptr.asFunction<int Function(CXType)>();
 
   /// Determine whether a CXCursor that is a macro, is function like.
   int clang_Cursor_isMacroFunctionLike(
@@ -2538,11 +2665,11 @@
   }
 
   late final _clang_Cursor_isMacroFunctionLike_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isMacroFunctionLike>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isMacroFunctionLike');
-  late final _dart_clang_Cursor_isMacroFunctionLike
-      _clang_Cursor_isMacroFunctionLike = _clang_Cursor_isMacroFunctionLike_ptr
-          .asFunction<_dart_clang_Cursor_isMacroFunctionLike>();
+  late final _clang_Cursor_isMacroFunctionLike =
+      _clang_Cursor_isMacroFunctionLike_ptr
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine whether a CXCursor that is a macro, is a builtin one.
   int clang_Cursor_isMacroBuiltin(
@@ -2554,11 +2681,10 @@
   }
 
   late final _clang_Cursor_isMacroBuiltin_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isMacroBuiltin>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isMacroBuiltin');
-  late final _dart_clang_Cursor_isMacroBuiltin _clang_Cursor_isMacroBuiltin =
-      _clang_Cursor_isMacroBuiltin_ptr
-          .asFunction<_dart_clang_Cursor_isMacroBuiltin>();
+  late final _clang_Cursor_isMacroBuiltin =
+      _clang_Cursor_isMacroBuiltin_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether a CXCursor that is a function declaration, is an inline
   /// declaration.
@@ -2571,11 +2697,10 @@
   }
 
   late final _clang_Cursor_isFunctionInlined_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isFunctionInlined>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isFunctionInlined');
-  late final _dart_clang_Cursor_isFunctionInlined
-      _clang_Cursor_isFunctionInlined = _clang_Cursor_isFunctionInlined_ptr
-          .asFunction<_dart_clang_Cursor_isFunctionInlined>();
+  late final _clang_Cursor_isFunctionInlined =
+      _clang_Cursor_isFunctionInlined_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether a CXType has the "volatile" qualifier set, without
   /// looking through typedefs that may have added "volatile" at a different
@@ -2589,11 +2714,10 @@
   }
 
   late final _clang_isVolatileQualifiedType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isVolatileQualifiedType>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_isVolatileQualifiedType');
-  late final _dart_clang_isVolatileQualifiedType
-      _clang_isVolatileQualifiedType = _clang_isVolatileQualifiedType_ptr
-          .asFunction<_dart_clang_isVolatileQualifiedType>();
+  late final _clang_isVolatileQualifiedType =
+      _clang_isVolatileQualifiedType_ptr.asFunction<int Function(CXType)>();
 
   /// Determine whether a CXType has the "restrict" qualifier set, without
   /// looking through typedefs that may have added "restrict" at a different
@@ -2607,11 +2731,10 @@
   }
 
   late final _clang_isRestrictQualifiedType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isRestrictQualifiedType>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_isRestrictQualifiedType');
-  late final _dart_clang_isRestrictQualifiedType
-      _clang_isRestrictQualifiedType = _clang_isRestrictQualifiedType_ptr
-          .asFunction<_dart_clang_isRestrictQualifiedType>();
+  late final _clang_isRestrictQualifiedType =
+      _clang_isRestrictQualifiedType_ptr.asFunction<int Function(CXType)>();
 
   /// Returns the address space of the given type.
   int clang_getAddressSpace(
@@ -2623,10 +2746,10 @@
   }
 
   late final _clang_getAddressSpace_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getAddressSpace>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_getAddressSpace');
-  late final _dart_clang_getAddressSpace _clang_getAddressSpace =
-      _clang_getAddressSpace_ptr.asFunction<_dart_clang_getAddressSpace>();
+  late final _clang_getAddressSpace =
+      _clang_getAddressSpace_ptr.asFunction<int Function(CXType)>();
 
   /// Returns the typedef name of the given type.
   CXString clang_getTypedefName(
@@ -2638,10 +2761,10 @@
   }
 
   late final _clang_getTypedefName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypedefName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXType)>>(
           'clang_getTypedefName');
-  late final _dart_clang_getTypedefName _clang_getTypedefName =
-      _clang_getTypedefName_ptr.asFunction<_dart_clang_getTypedefName>();
+  late final _clang_getTypedefName =
+      _clang_getTypedefName_ptr.asFunction<CXString Function(CXType)>();
 
   /// For pointer types, returns the type of the pointee.
   CXType clang_getPointeeType(
@@ -2653,10 +2776,10 @@
   }
 
   late final _clang_getPointeeType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getPointeeType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getPointeeType');
-  late final _dart_clang_getPointeeType _clang_getPointeeType =
-      _clang_getPointeeType_ptr.asFunction<_dart_clang_getPointeeType>();
+  late final _clang_getPointeeType =
+      _clang_getPointeeType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the cursor for the declaration of the given type.
   CXCursor clang_getTypeDeclaration(
@@ -2668,11 +2791,10 @@
   }
 
   late final _clang_getTypeDeclaration_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypeDeclaration>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXType)>>(
           'clang_getTypeDeclaration');
-  late final _dart_clang_getTypeDeclaration _clang_getTypeDeclaration =
-      _clang_getTypeDeclaration_ptr
-          .asFunction<_dart_clang_getTypeDeclaration>();
+  late final _clang_getTypeDeclaration =
+      _clang_getTypeDeclaration_ptr.asFunction<CXCursor Function(CXType)>();
 
   /// Returns the Objective-C type encoding for the specified declaration.
   CXString clang_getDeclObjCTypeEncoding(
@@ -2684,11 +2806,10 @@
   }
 
   late final _clang_getDeclObjCTypeEncoding_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDeclObjCTypeEncoding>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_getDeclObjCTypeEncoding');
-  late final _dart_clang_getDeclObjCTypeEncoding
-      _clang_getDeclObjCTypeEncoding = _clang_getDeclObjCTypeEncoding_ptr
-          .asFunction<_dart_clang_getDeclObjCTypeEncoding>();
+  late final _clang_getDeclObjCTypeEncoding = _clang_getDeclObjCTypeEncoding_ptr
+      .asFunction<CXString Function(CXCursor)>();
 
   /// Returns the Objective-C type encoding for the specified CXType.
   CXString clang_Type_getObjCEncoding(
@@ -2700,11 +2821,10 @@
   }
 
   late final _clang_Type_getObjCEncoding_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getObjCEncoding>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXType)>>(
           'clang_Type_getObjCEncoding');
-  late final _dart_clang_Type_getObjCEncoding _clang_Type_getObjCEncoding =
-      _clang_Type_getObjCEncoding_ptr
-          .asFunction<_dart_clang_Type_getObjCEncoding>();
+  late final _clang_Type_getObjCEncoding =
+      _clang_Type_getObjCEncoding_ptr.asFunction<CXString Function(CXType)>();
 
   /// Retrieve the spelling of a given CXTypeKind.
   CXString clang_getTypeKindSpelling(
@@ -2716,11 +2836,10 @@
   }
 
   late final _clang_getTypeKindSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTypeKindSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(ffi.Int32)>>(
           'clang_getTypeKindSpelling');
-  late final _dart_clang_getTypeKindSpelling _clang_getTypeKindSpelling =
-      _clang_getTypeKindSpelling_ptr
-          .asFunction<_dart_clang_getTypeKindSpelling>();
+  late final _clang_getTypeKindSpelling =
+      _clang_getTypeKindSpelling_ptr.asFunction<CXString Function(int)>();
 
   /// Retrieve the calling convention associated with a function type.
   int clang_getFunctionTypeCallingConv(
@@ -2732,11 +2851,10 @@
   }
 
   late final _clang_getFunctionTypeCallingConv_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getFunctionTypeCallingConv>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXType)>>(
           'clang_getFunctionTypeCallingConv');
-  late final _dart_clang_getFunctionTypeCallingConv
-      _clang_getFunctionTypeCallingConv = _clang_getFunctionTypeCallingConv_ptr
-          .asFunction<_dart_clang_getFunctionTypeCallingConv>();
+  late final _clang_getFunctionTypeCallingConv =
+      _clang_getFunctionTypeCallingConv_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the return type associated with a function type.
   CXType clang_getResultType(
@@ -2748,10 +2866,10 @@
   }
 
   late final _clang_getResultType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getResultType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getResultType');
-  late final _dart_clang_getResultType _clang_getResultType =
-      _clang_getResultType_ptr.asFunction<_dart_clang_getResultType>();
+  late final _clang_getResultType =
+      _clang_getResultType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Retrieve the exception specification type associated with a function type.
   /// This is a value of type CXCursor_ExceptionSpecificationKind.
@@ -2764,12 +2882,11 @@
   }
 
   late final _clang_getExceptionSpecificationType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getExceptionSpecificationType>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXType)>>(
           'clang_getExceptionSpecificationType');
-  late final _dart_clang_getExceptionSpecificationType
-      _clang_getExceptionSpecificationType =
+  late final _clang_getExceptionSpecificationType =
       _clang_getExceptionSpecificationType_ptr
-          .asFunction<_dart_clang_getExceptionSpecificationType>();
+          .asFunction<int Function(CXType)>();
 
   /// Retrieve the number of non-variadic parameters associated with a function
   /// type.
@@ -2782,10 +2899,10 @@
   }
 
   late final _clang_getNumArgTypes_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumArgTypes>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXType)>>(
           'clang_getNumArgTypes');
-  late final _dart_clang_getNumArgTypes _clang_getNumArgTypes =
-      _clang_getNumArgTypes_ptr.asFunction<_dart_clang_getNumArgTypes>();
+  late final _clang_getNumArgTypes =
+      _clang_getNumArgTypes_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the type of a parameter of a function type.
   CXType clang_getArgType(
@@ -2799,9 +2916,10 @@
   }
 
   late final _clang_getArgType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getArgType>>('clang_getArgType');
-  late final _dart_clang_getArgType _clang_getArgType =
-      _clang_getArgType_ptr.asFunction<_dart_clang_getArgType>();
+      _lookup<ffi.NativeFunction<CXType Function(CXType, ffi.Uint32)>>(
+          'clang_getArgType');
+  late final _clang_getArgType =
+      _clang_getArgType_ptr.asFunction<CXType Function(CXType, int)>();
 
   /// Retrieves the base type of the ObjCObjectType.
   CXType clang_Type_getObjCObjectBaseType(
@@ -2813,11 +2931,11 @@
   }
 
   late final _clang_Type_getObjCObjectBaseType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getObjCObjectBaseType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_Type_getObjCObjectBaseType');
-  late final _dart_clang_Type_getObjCObjectBaseType
-      _clang_Type_getObjCObjectBaseType = _clang_Type_getObjCObjectBaseType_ptr
-          .asFunction<_dart_clang_Type_getObjCObjectBaseType>();
+  late final _clang_Type_getObjCObjectBaseType =
+      _clang_Type_getObjCObjectBaseType_ptr
+          .asFunction<CXType Function(CXType)>();
 
   /// Retrieve the number of protocol references associated with an ObjC
   /// object/id.
@@ -2830,12 +2948,10 @@
   }
 
   late final _clang_Type_getNumObjCProtocolRefs_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getNumObjCProtocolRefs>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_Type_getNumObjCProtocolRefs');
-  late final _dart_clang_Type_getNumObjCProtocolRefs
-      _clang_Type_getNumObjCProtocolRefs =
-      _clang_Type_getNumObjCProtocolRefs_ptr
-          .asFunction<_dart_clang_Type_getNumObjCProtocolRefs>();
+  late final _clang_Type_getNumObjCProtocolRefs =
+      _clang_Type_getNumObjCProtocolRefs_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the decl for a protocol reference for an ObjC object/id.
   CXCursor clang_Type_getObjCProtocolDecl(
@@ -2849,11 +2965,11 @@
   }
 
   late final _clang_Type_getObjCProtocolDecl_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getObjCProtocolDecl>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXType, ffi.Uint32)>>(
           'clang_Type_getObjCProtocolDecl');
-  late final _dart_clang_Type_getObjCProtocolDecl
-      _clang_Type_getObjCProtocolDecl = _clang_Type_getObjCProtocolDecl_ptr
-          .asFunction<_dart_clang_Type_getObjCProtocolDecl>();
+  late final _clang_Type_getObjCProtocolDecl =
+      _clang_Type_getObjCProtocolDecl_ptr
+          .asFunction<CXCursor Function(CXType, int)>();
 
   /// Retreive the number of type arguments associated with an ObjC object.
   int clang_Type_getNumObjCTypeArgs(
@@ -2865,11 +2981,10 @@
   }
 
   late final _clang_Type_getNumObjCTypeArgs_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getNumObjCTypeArgs>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_Type_getNumObjCTypeArgs');
-  late final _dart_clang_Type_getNumObjCTypeArgs
-      _clang_Type_getNumObjCTypeArgs = _clang_Type_getNumObjCTypeArgs_ptr
-          .asFunction<_dart_clang_Type_getNumObjCTypeArgs>();
+  late final _clang_Type_getNumObjCTypeArgs =
+      _clang_Type_getNumObjCTypeArgs_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve a type argument associated with an ObjC object.
   CXType clang_Type_getObjCTypeArg(
@@ -2883,11 +2998,10 @@
   }
 
   late final _clang_Type_getObjCTypeArg_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getObjCTypeArg>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType, ffi.Uint32)>>(
           'clang_Type_getObjCTypeArg');
-  late final _dart_clang_Type_getObjCTypeArg _clang_Type_getObjCTypeArg =
-      _clang_Type_getObjCTypeArg_ptr
-          .asFunction<_dart_clang_Type_getObjCTypeArg>();
+  late final _clang_Type_getObjCTypeArg =
+      _clang_Type_getObjCTypeArg_ptr.asFunction<CXType Function(CXType, int)>();
 
   /// Return 1 if the CXType is a variadic function type, and 0 otherwise.
   int clang_isFunctionTypeVariadic(
@@ -2899,11 +3013,10 @@
   }
 
   late final _clang_isFunctionTypeVariadic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isFunctionTypeVariadic>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_isFunctionTypeVariadic');
-  late final _dart_clang_isFunctionTypeVariadic _clang_isFunctionTypeVariadic =
-      _clang_isFunctionTypeVariadic_ptr
-          .asFunction<_dart_clang_isFunctionTypeVariadic>();
+  late final _clang_isFunctionTypeVariadic =
+      _clang_isFunctionTypeVariadic_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the return type associated with a given cursor.
   CXType clang_getCursorResultType(
@@ -2915,11 +3028,10 @@
   }
 
   late final _clang_getCursorResultType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorResultType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_getCursorResultType');
-  late final _dart_clang_getCursorResultType _clang_getCursorResultType =
-      _clang_getCursorResultType_ptr
-          .asFunction<_dart_clang_getCursorResultType>();
+  late final _clang_getCursorResultType =
+      _clang_getCursorResultType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Retrieve the exception specification type associated with a given cursor.
   /// This is a value of type CXCursor_ExceptionSpecificationKind.
@@ -2932,12 +3044,11 @@
   }
 
   late final _clang_getCursorExceptionSpecificationType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorExceptionSpecificationType>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCursorExceptionSpecificationType');
-  late final _dart_clang_getCursorExceptionSpecificationType
-      _clang_getCursorExceptionSpecificationType =
+  late final _clang_getCursorExceptionSpecificationType =
       _clang_getCursorExceptionSpecificationType_ptr
-          .asFunction<_dart_clang_getCursorExceptionSpecificationType>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Return 1 if the CXType is a POD (plain old data) type, and 0 otherwise.
   int clang_isPODType(
@@ -2949,9 +3060,10 @@
   }
 
   late final _clang_isPODType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isPODType>>('clang_isPODType');
-  late final _dart_clang_isPODType _clang_isPODType =
-      _clang_isPODType_ptr.asFunction<_dart_clang_isPODType>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
+          'clang_isPODType');
+  late final _clang_isPODType =
+      _clang_isPODType_ptr.asFunction<int Function(CXType)>();
 
   /// Return the element type of an array, complex, or vector type.
   CXType clang_getElementType(
@@ -2963,10 +3075,10 @@
   }
 
   late final _clang_getElementType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getElementType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getElementType');
-  late final _dart_clang_getElementType _clang_getElementType =
-      _clang_getElementType_ptr.asFunction<_dart_clang_getElementType>();
+  late final _clang_getElementType =
+      _clang_getElementType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the number of elements of an array or vector type.
   int clang_getNumElements(
@@ -2978,10 +3090,10 @@
   }
 
   late final _clang_getNumElements_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumElements>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXType)>>(
           'clang_getNumElements');
-  late final _dart_clang_getNumElements _clang_getNumElements =
-      _clang_getNumElements_ptr.asFunction<_dart_clang_getNumElements>();
+  late final _clang_getNumElements =
+      _clang_getNumElements_ptr.asFunction<int Function(CXType)>();
 
   /// Return the element type of an array type.
   CXType clang_getArrayElementType(
@@ -2993,11 +3105,10 @@
   }
 
   late final _clang_getArrayElementType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getArrayElementType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_getArrayElementType');
-  late final _dart_clang_getArrayElementType _clang_getArrayElementType =
-      _clang_getArrayElementType_ptr
-          .asFunction<_dart_clang_getArrayElementType>();
+  late final _clang_getArrayElementType =
+      _clang_getArrayElementType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the array size of a constant array.
   int clang_getArraySize(
@@ -3009,9 +3120,10 @@
   }
 
   late final _clang_getArraySize_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getArraySize>>('clang_getArraySize');
-  late final _dart_clang_getArraySize _clang_getArraySize =
-      _clang_getArraySize_ptr.asFunction<_dart_clang_getArraySize>();
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXType)>>(
+          'clang_getArraySize');
+  late final _clang_getArraySize =
+      _clang_getArraySize_ptr.asFunction<int Function(CXType)>();
 
   /// Retrieve the type named by the qualified-id.
   CXType clang_Type_getNamedType(
@@ -3023,10 +3135,10 @@
   }
 
   late final _clang_Type_getNamedType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getNamedType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_Type_getNamedType');
-  late final _dart_clang_Type_getNamedType _clang_Type_getNamedType =
-      _clang_Type_getNamedType_ptr.asFunction<_dart_clang_Type_getNamedType>();
+  late final _clang_Type_getNamedType =
+      _clang_Type_getNamedType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Determine if a typedef is 'transparent' tag.
   int clang_Type_isTransparentTagTypedef(
@@ -3038,12 +3150,11 @@
   }
 
   late final _clang_Type_isTransparentTagTypedef_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_isTransparentTagTypedef>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXType)>>(
           'clang_Type_isTransparentTagTypedef');
-  late final _dart_clang_Type_isTransparentTagTypedef
-      _clang_Type_isTransparentTagTypedef =
+  late final _clang_Type_isTransparentTagTypedef =
       _clang_Type_isTransparentTagTypedef_ptr
-          .asFunction<_dart_clang_Type_isTransparentTagTypedef>();
+          .asFunction<int Function(CXType)>();
 
   /// Retrieve the nullability kind of a pointer type.
   int clang_Type_getNullability(
@@ -3055,11 +3166,10 @@
   }
 
   late final _clang_Type_getNullability_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getNullability>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXType)>>(
           'clang_Type_getNullability');
-  late final _dart_clang_Type_getNullability _clang_Type_getNullability =
-      _clang_Type_getNullability_ptr
-          .asFunction<_dart_clang_Type_getNullability>();
+  late final _clang_Type_getNullability =
+      _clang_Type_getNullability_ptr.asFunction<int Function(CXType)>();
 
   /// Return the alignment of a type in bytes as per C++[expr.alignof] standard.
   int clang_Type_getAlignOf(
@@ -3071,10 +3181,10 @@
   }
 
   late final _clang_Type_getAlignOf_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getAlignOf>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXType)>>(
           'clang_Type_getAlignOf');
-  late final _dart_clang_Type_getAlignOf _clang_Type_getAlignOf =
-      _clang_Type_getAlignOf_ptr.asFunction<_dart_clang_Type_getAlignOf>();
+  late final _clang_Type_getAlignOf =
+      _clang_Type_getAlignOf_ptr.asFunction<int Function(CXType)>();
 
   /// Return the class type of an member pointer type.
   CXType clang_Type_getClassType(
@@ -3086,10 +3196,10 @@
   }
 
   late final _clang_Type_getClassType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getClassType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_Type_getClassType');
-  late final _dart_clang_Type_getClassType _clang_Type_getClassType =
-      _clang_Type_getClassType_ptr.asFunction<_dart_clang_Type_getClassType>();
+  late final _clang_Type_getClassType =
+      _clang_Type_getClassType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the size of a type in bytes as per C++[expr.sizeof] standard.
   int clang_Type_getSizeOf(
@@ -3101,10 +3211,10 @@
   }
 
   late final _clang_Type_getSizeOf_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getSizeOf>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXType)>>(
           'clang_Type_getSizeOf');
-  late final _dart_clang_Type_getSizeOf _clang_Type_getSizeOf =
-      _clang_Type_getSizeOf_ptr.asFunction<_dart_clang_Type_getSizeOf>();
+  late final _clang_Type_getSizeOf =
+      _clang_Type_getSizeOf_ptr.asFunction<int Function(CXType)>();
 
   /// Return the offset of a field named S in a record of type T in bits as it
   /// would be returned by __offsetof__ as per C++11[18.2p4]
@@ -3118,11 +3228,12 @@
     );
   }
 
-  late final _clang_Type_getOffsetOf_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getOffsetOf>>(
-          'clang_Type_getOffsetOf');
-  late final _dart_clang_Type_getOffsetOf _clang_Type_getOffsetOf =
-      _clang_Type_getOffsetOf_ptr.asFunction<_dart_clang_Type_getOffsetOf>();
+  late final _clang_Type_getOffsetOf_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int64 Function(
+              CXType, ffi.Pointer<ffi.Int8>)>>('clang_Type_getOffsetOf');
+  late final _clang_Type_getOffsetOf = _clang_Type_getOffsetOf_ptr
+      .asFunction<int Function(CXType, ffi.Pointer<ffi.Int8>)>();
 
   /// Return the type that was modified by this attributed type.
   CXType clang_Type_getModifiedType(
@@ -3134,11 +3245,10 @@
   }
 
   late final _clang_Type_getModifiedType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getModifiedType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType)>>(
           'clang_Type_getModifiedType');
-  late final _dart_clang_Type_getModifiedType _clang_Type_getModifiedType =
-      _clang_Type_getModifiedType_ptr
-          .asFunction<_dart_clang_Type_getModifiedType>();
+  late final _clang_Type_getModifiedType =
+      _clang_Type_getModifiedType_ptr.asFunction<CXType Function(CXType)>();
 
   /// Return the offset of the field represented by the Cursor.
   int clang_Cursor_getOffsetOfField(
@@ -3150,11 +3260,10 @@
   }
 
   late final _clang_Cursor_getOffsetOfField_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getOffsetOfField>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXCursor)>>(
           'clang_Cursor_getOffsetOfField');
-  late final _dart_clang_Cursor_getOffsetOfField
-      _clang_Cursor_getOffsetOfField = _clang_Cursor_getOffsetOfField_ptr
-          .asFunction<_dart_clang_Cursor_getOffsetOfField>();
+  late final _clang_Cursor_getOffsetOfField =
+      _clang_Cursor_getOffsetOfField_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor represents an anonymous tag or
   /// namespace
@@ -3167,11 +3276,10 @@
   }
 
   late final _clang_Cursor_isAnonymous_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isAnonymous>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isAnonymous');
-  late final _dart_clang_Cursor_isAnonymous _clang_Cursor_isAnonymous =
-      _clang_Cursor_isAnonymous_ptr
-          .asFunction<_dart_clang_Cursor_isAnonymous>();
+  late final _clang_Cursor_isAnonymous =
+      _clang_Cursor_isAnonymous_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor represents an anonymous record
   /// declaration.
@@ -3184,12 +3292,11 @@
   }
 
   late final _clang_Cursor_isAnonymousRecordDecl_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isAnonymousRecordDecl>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isAnonymousRecordDecl');
-  late final _dart_clang_Cursor_isAnonymousRecordDecl
-      _clang_Cursor_isAnonymousRecordDecl =
+  late final _clang_Cursor_isAnonymousRecordDecl =
       _clang_Cursor_isAnonymousRecordDecl_ptr
-          .asFunction<_dart_clang_Cursor_isAnonymousRecordDecl>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine whether the given cursor represents an inline namespace
   /// declaration.
@@ -3202,11 +3309,10 @@
   }
 
   late final _clang_Cursor_isInlineNamespace_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isInlineNamespace>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isInlineNamespace');
-  late final _dart_clang_Cursor_isInlineNamespace
-      _clang_Cursor_isInlineNamespace = _clang_Cursor_isInlineNamespace_ptr
-          .asFunction<_dart_clang_Cursor_isInlineNamespace>();
+  late final _clang_Cursor_isInlineNamespace =
+      _clang_Cursor_isInlineNamespace_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the number of template arguments for given template
   /// specialization, or -1 if type T is not a template specialization.
@@ -3219,12 +3325,11 @@
   }
 
   late final _clang_Type_getNumTemplateArguments_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getNumTemplateArguments>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXType)>>(
           'clang_Type_getNumTemplateArguments');
-  late final _dart_clang_Type_getNumTemplateArguments
-      _clang_Type_getNumTemplateArguments =
+  late final _clang_Type_getNumTemplateArguments =
       _clang_Type_getNumTemplateArguments_ptr
-          .asFunction<_dart_clang_Type_getNumTemplateArguments>();
+          .asFunction<int Function(CXType)>();
 
   /// Returns the type template argument of a template class specialization at
   /// given index.
@@ -3239,12 +3344,11 @@
   }
 
   late final _clang_Type_getTemplateArgumentAsType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getTemplateArgumentAsType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXType, ffi.Uint32)>>(
           'clang_Type_getTemplateArgumentAsType');
-  late final _dart_clang_Type_getTemplateArgumentAsType
-      _clang_Type_getTemplateArgumentAsType =
+  late final _clang_Type_getTemplateArgumentAsType =
       _clang_Type_getTemplateArgumentAsType_ptr
-          .asFunction<_dart_clang_Type_getTemplateArgumentAsType>();
+          .asFunction<CXType Function(CXType, int)>();
 
   /// Retrieve the ref-qualifier kind of a function or method.
   int clang_Type_getCXXRefQualifier(
@@ -3256,11 +3360,10 @@
   }
 
   late final _clang_Type_getCXXRefQualifier_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_getCXXRefQualifier>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXType)>>(
           'clang_Type_getCXXRefQualifier');
-  late final _dart_clang_Type_getCXXRefQualifier
-      _clang_Type_getCXXRefQualifier = _clang_Type_getCXXRefQualifier_ptr
-          .asFunction<_dart_clang_Type_getCXXRefQualifier>();
+  late final _clang_Type_getCXXRefQualifier =
+      _clang_Type_getCXXRefQualifier_ptr.asFunction<int Function(CXType)>();
 
   /// Returns non-zero if the cursor specifies a Record member that is a
   /// bitfield.
@@ -3273,10 +3376,10 @@
   }
 
   late final _clang_Cursor_isBitField_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isBitField>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isBitField');
-  late final _dart_clang_Cursor_isBitField _clang_Cursor_isBitField =
-      _clang_Cursor_isBitField_ptr.asFunction<_dart_clang_Cursor_isBitField>();
+  late final _clang_Cursor_isBitField =
+      _clang_Cursor_isBitField_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns 1 if the base class specified by the cursor with kind
   /// CX_CXXBaseSpecifier is virtual.
@@ -3289,10 +3392,10 @@
   }
 
   late final _clang_isVirtualBase_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isVirtualBase>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_isVirtualBase');
-  late final _dart_clang_isVirtualBase _clang_isVirtualBase =
-      _clang_isVirtualBase_ptr.asFunction<_dart_clang_isVirtualBase>();
+  late final _clang_isVirtualBase =
+      _clang_isVirtualBase_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the access control level for the referenced object.
   int clang_getCXXAccessSpecifier(
@@ -3304,11 +3407,10 @@
   }
 
   late final _clang_getCXXAccessSpecifier_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCXXAccessSpecifier>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getCXXAccessSpecifier');
-  late final _dart_clang_getCXXAccessSpecifier _clang_getCXXAccessSpecifier =
-      _clang_getCXXAccessSpecifier_ptr
-          .asFunction<_dart_clang_getCXXAccessSpecifier>();
+  late final _clang_getCXXAccessSpecifier =
+      _clang_getCXXAccessSpecifier_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns the storage class for a function or variable declaration.
   int clang_Cursor_getStorageClass(
@@ -3320,11 +3422,10 @@
   }
 
   late final _clang_Cursor_getStorageClass_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getStorageClass>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_getStorageClass');
-  late final _dart_clang_Cursor_getStorageClass _clang_Cursor_getStorageClass =
-      _clang_Cursor_getStorageClass_ptr
-          .asFunction<_dart_clang_Cursor_getStorageClass>();
+  late final _clang_Cursor_getStorageClass =
+      _clang_Cursor_getStorageClass_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine the number of overloaded declarations referenced by a
   /// CXCursor_OverloadedDeclRef cursor.
@@ -3337,11 +3438,10 @@
   }
 
   late final _clang_getNumOverloadedDecls_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumOverloadedDecls>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_getNumOverloadedDecls');
-  late final _dart_clang_getNumOverloadedDecls _clang_getNumOverloadedDecls =
-      _clang_getNumOverloadedDecls_ptr
-          .asFunction<_dart_clang_getNumOverloadedDecls>();
+  late final _clang_getNumOverloadedDecls =
+      _clang_getNumOverloadedDecls_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve a cursor for one of the overloaded declarations referenced by a
   /// CXCursor_OverloadedDeclRef cursor.
@@ -3356,10 +3456,10 @@
   }
 
   late final _clang_getOverloadedDecl_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getOverloadedDecl>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor, ffi.Uint32)>>(
           'clang_getOverloadedDecl');
-  late final _dart_clang_getOverloadedDecl _clang_getOverloadedDecl =
-      _clang_getOverloadedDecl_ptr.asFunction<_dart_clang_getOverloadedDecl>();
+  late final _clang_getOverloadedDecl = _clang_getOverloadedDecl_ptr
+      .asFunction<CXCursor Function(CXCursor, int)>();
 
   /// For cursors representing an iboutletcollection attribute, this function
   /// returns the collection element type.
@@ -3372,17 +3472,17 @@
   }
 
   late final _clang_getIBOutletCollectionType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getIBOutletCollectionType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_getIBOutletCollectionType');
-  late final _dart_clang_getIBOutletCollectionType
-      _clang_getIBOutletCollectionType = _clang_getIBOutletCollectionType_ptr
-          .asFunction<_dart_clang_getIBOutletCollectionType>();
+  late final _clang_getIBOutletCollectionType =
+      _clang_getIBOutletCollectionType_ptr
+          .asFunction<CXType Function(CXCursor)>();
 
   /// Visit the children of a particular cursor.
   int clang_visitChildren(
     CXCursor parent,
-    ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-    ffi.Pointer<ffi.Void> client_data,
+    CXCursorVisitor visitor,
+    CXClientData client_data,
   ) {
     return _clang_visitChildren(
       parent,
@@ -3391,11 +3491,12 @@
     );
   }
 
-  late final _clang_visitChildren_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_visitChildren>>(
-          'clang_visitChildren');
-  late final _dart_clang_visitChildren _clang_visitChildren =
-      _clang_visitChildren_ptr.asFunction<_dart_clang_visitChildren>();
+  late final _clang_visitChildren_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(
+              CXCursor, CXCursorVisitor, CXClientData)>>('clang_visitChildren');
+  late final _clang_visitChildren = _clang_visitChildren_ptr
+      .asFunction<int Function(CXCursor, CXCursorVisitor, CXClientData)>();
 
   /// Retrieve a Unified Symbol Resolution (USR) for the entity referenced by
   /// the given cursor.
@@ -3408,9 +3509,10 @@
   }
 
   late final _clang_getCursorUSR_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorUSR>>('clang_getCursorUSR');
-  late final _dart_clang_getCursorUSR _clang_getCursorUSR =
-      _clang_getCursorUSR_ptr.asFunction<_dart_clang_getCursorUSR>();
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
+          'clang_getCursorUSR');
+  late final _clang_getCursorUSR =
+      _clang_getCursorUSR_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// Construct a USR for a specified Objective-C class.
   CXString clang_constructUSR_ObjCClass(
@@ -3422,11 +3524,10 @@
   }
 
   late final _clang_constructUSR_ObjCClass_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_constructUSR_ObjCClass>>(
+      _lookup<ffi.NativeFunction<CXString Function(ffi.Pointer<ffi.Int8>)>>(
           'clang_constructUSR_ObjCClass');
-  late final _dart_clang_constructUSR_ObjCClass _clang_constructUSR_ObjCClass =
-      _clang_constructUSR_ObjCClass_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCClass>();
+  late final _clang_constructUSR_ObjCClass = _clang_constructUSR_ObjCClass_ptr
+      .asFunction<CXString Function(ffi.Pointer<ffi.Int8>)>();
 
   /// Construct a USR for a specified Objective-C category.
   CXString clang_constructUSR_ObjCCategory(
@@ -3439,12 +3540,13 @@
     );
   }
 
-  late final _clang_constructUSR_ObjCCategory_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_constructUSR_ObjCCategory>>(
-          'clang_constructUSR_ObjCCategory');
-  late final _dart_clang_constructUSR_ObjCCategory
-      _clang_constructUSR_ObjCCategory = _clang_constructUSR_ObjCCategory_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCCategory>();
+  late final _clang_constructUSR_ObjCCategory_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('clang_constructUSR_ObjCCategory');
+  late final _clang_constructUSR_ObjCCategory =
+      _clang_constructUSR_ObjCCategory_ptr.asFunction<
+          CXString Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   /// Construct a USR for a specified Objective-C protocol.
   CXString clang_constructUSR_ObjCProtocol(
@@ -3456,11 +3558,11 @@
   }
 
   late final _clang_constructUSR_ObjCProtocol_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_constructUSR_ObjCProtocol>>(
+      _lookup<ffi.NativeFunction<CXString Function(ffi.Pointer<ffi.Int8>)>>(
           'clang_constructUSR_ObjCProtocol');
-  late final _dart_clang_constructUSR_ObjCProtocol
-      _clang_constructUSR_ObjCProtocol = _clang_constructUSR_ObjCProtocol_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCProtocol>();
+  late final _clang_constructUSR_ObjCProtocol =
+      _clang_constructUSR_ObjCProtocol_ptr
+          .asFunction<CXString Function(ffi.Pointer<ffi.Int8>)>();
 
   /// Construct a USR for a specified Objective-C instance variable and the USR
   /// for its containing class.
@@ -3474,12 +3576,12 @@
     );
   }
 
-  late final _clang_constructUSR_ObjCIvar_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_constructUSR_ObjCIvar>>(
-          'clang_constructUSR_ObjCIvar');
-  late final _dart_clang_constructUSR_ObjCIvar _clang_constructUSR_ObjCIvar =
-      _clang_constructUSR_ObjCIvar_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCIvar>();
+  late final _clang_constructUSR_ObjCIvar_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(
+              ffi.Pointer<ffi.Int8>, CXString)>>('clang_constructUSR_ObjCIvar');
+  late final _clang_constructUSR_ObjCIvar = _clang_constructUSR_ObjCIvar_ptr
+      .asFunction<CXString Function(ffi.Pointer<ffi.Int8>, CXString)>();
 
   /// Construct a USR for a specified Objective-C method and the USR for its
   /// containing class.
@@ -3495,12 +3597,12 @@
     );
   }
 
-  late final _clang_constructUSR_ObjCMethod_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_constructUSR_ObjCMethod>>(
-          'clang_constructUSR_ObjCMethod');
-  late final _dart_clang_constructUSR_ObjCMethod
-      _clang_constructUSR_ObjCMethod = _clang_constructUSR_ObjCMethod_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCMethod>();
+  late final _clang_constructUSR_ObjCMethod_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(ffi.Pointer<ffi.Int8>, ffi.Uint32,
+              CXString)>>('clang_constructUSR_ObjCMethod');
+  late final _clang_constructUSR_ObjCMethod = _clang_constructUSR_ObjCMethod_ptr
+      .asFunction<CXString Function(ffi.Pointer<ffi.Int8>, int, CXString)>();
 
   /// Construct a USR for a specified Objective-C property and the USR for its
   /// containing class.
@@ -3514,12 +3616,13 @@
     );
   }
 
-  late final _clang_constructUSR_ObjCProperty_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_constructUSR_ObjCProperty>>(
-          'clang_constructUSR_ObjCProperty');
-  late final _dart_clang_constructUSR_ObjCProperty
-      _clang_constructUSR_ObjCProperty = _clang_constructUSR_ObjCProperty_ptr
-          .asFunction<_dart_clang_constructUSR_ObjCProperty>();
+  late final _clang_constructUSR_ObjCProperty_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(ffi.Pointer<ffi.Int8>,
+              CXString)>>('clang_constructUSR_ObjCProperty');
+  late final _clang_constructUSR_ObjCProperty =
+      _clang_constructUSR_ObjCProperty_ptr
+          .asFunction<CXString Function(ffi.Pointer<ffi.Int8>, CXString)>();
 
   /// Retrieve a name for the entity referenced by this cursor.
   CXString clang_getCursorSpelling(
@@ -3531,10 +3634,10 @@
   }
 
   late final _clang_getCursorSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_getCursorSpelling');
-  late final _dart_clang_getCursorSpelling _clang_getCursorSpelling =
-      _clang_getCursorSpelling_ptr.asFunction<_dart_clang_getCursorSpelling>();
+  late final _clang_getCursorSpelling =
+      _clang_getCursorSpelling_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// Retrieve a range for a piece that forms the cursors spelling name. Most of
   /// the times there is only one range for the complete spelling but for
@@ -3552,17 +3655,17 @@
     );
   }
 
-  late final _clang_Cursor_getSpellingNameRange_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getSpellingNameRange>>(
-          'clang_Cursor_getSpellingNameRange');
-  late final _dart_clang_Cursor_getSpellingNameRange
-      _clang_Cursor_getSpellingNameRange =
+  late final _clang_Cursor_getSpellingNameRange_ptr = _lookup<
+      ffi.NativeFunction<
+          CXSourceRange Function(CXCursor, ffi.Uint32,
+              ffi.Uint32)>>('clang_Cursor_getSpellingNameRange');
+  late final _clang_Cursor_getSpellingNameRange =
       _clang_Cursor_getSpellingNameRange_ptr
-          .asFunction<_dart_clang_Cursor_getSpellingNameRange>();
+          .asFunction<CXSourceRange Function(CXCursor, int, int)>();
 
   /// Get a property value for the given printing policy.
   int clang_PrintingPolicy_getProperty(
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
     int Property,
   ) {
     return _clang_PrintingPolicy_getProperty(
@@ -3571,16 +3674,16 @@
     );
   }
 
-  late final _clang_PrintingPolicy_getProperty_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_PrintingPolicy_getProperty>>(
-          'clang_PrintingPolicy_getProperty');
-  late final _dart_clang_PrintingPolicy_getProperty
-      _clang_PrintingPolicy_getProperty = _clang_PrintingPolicy_getProperty_ptr
-          .asFunction<_dart_clang_PrintingPolicy_getProperty>();
+  late final _clang_PrintingPolicy_getProperty_ptr = _lookup<
+          ffi.NativeFunction<ffi.Uint32 Function(CXPrintingPolicy, ffi.Int32)>>(
+      'clang_PrintingPolicy_getProperty');
+  late final _clang_PrintingPolicy_getProperty =
+      _clang_PrintingPolicy_getProperty_ptr
+          .asFunction<int Function(CXPrintingPolicy, int)>();
 
   /// Set a property value for the given printing policy.
   void clang_PrintingPolicy_setProperty(
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
     int Property,
     int Value,
   ) {
@@ -3591,15 +3694,16 @@
     );
   }
 
-  late final _clang_PrintingPolicy_setProperty_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_PrintingPolicy_setProperty>>(
-          'clang_PrintingPolicy_setProperty');
-  late final _dart_clang_PrintingPolicy_setProperty
-      _clang_PrintingPolicy_setProperty = _clang_PrintingPolicy_setProperty_ptr
-          .asFunction<_dart_clang_PrintingPolicy_setProperty>();
+  late final _clang_PrintingPolicy_setProperty_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(CXPrintingPolicy, ffi.Int32,
+              ffi.Uint32)>>('clang_PrintingPolicy_setProperty');
+  late final _clang_PrintingPolicy_setProperty =
+      _clang_PrintingPolicy_setProperty_ptr
+          .asFunction<void Function(CXPrintingPolicy, int, int)>();
 
   /// Retrieve the default policy for the cursor.
-  ffi.Pointer<ffi.Void> clang_getCursorPrintingPolicy(
+  CXPrintingPolicy clang_getCursorPrintingPolicy(
     CXCursor arg0,
   ) {
     return _clang_getCursorPrintingPolicy(
@@ -3608,15 +3712,14 @@
   }
 
   late final _clang_getCursorPrintingPolicy_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorPrintingPolicy>>(
+      _lookup<ffi.NativeFunction<CXPrintingPolicy Function(CXCursor)>>(
           'clang_getCursorPrintingPolicy');
-  late final _dart_clang_getCursorPrintingPolicy
-      _clang_getCursorPrintingPolicy = _clang_getCursorPrintingPolicy_ptr
-          .asFunction<_dart_clang_getCursorPrintingPolicy>();
+  late final _clang_getCursorPrintingPolicy = _clang_getCursorPrintingPolicy_ptr
+      .asFunction<CXPrintingPolicy Function(CXCursor)>();
 
   /// Release a printing policy.
   void clang_PrintingPolicy_dispose(
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
   ) {
     return _clang_PrintingPolicy_dispose(
       Policy,
@@ -3624,16 +3727,15 @@
   }
 
   late final _clang_PrintingPolicy_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_PrintingPolicy_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXPrintingPolicy)>>(
           'clang_PrintingPolicy_dispose');
-  late final _dart_clang_PrintingPolicy_dispose _clang_PrintingPolicy_dispose =
-      _clang_PrintingPolicy_dispose_ptr
-          .asFunction<_dart_clang_PrintingPolicy_dispose>();
+  late final _clang_PrintingPolicy_dispose = _clang_PrintingPolicy_dispose_ptr
+      .asFunction<void Function(CXPrintingPolicy)>();
 
   /// Pretty print declarations.
   CXString clang_getCursorPrettyPrinted(
     CXCursor Cursor,
-    ffi.Pointer<ffi.Void> Policy,
+    CXPrintingPolicy Policy,
   ) {
     return _clang_getCursorPrettyPrinted(
       Cursor,
@@ -3641,12 +3743,11 @@
     );
   }
 
-  late final _clang_getCursorPrettyPrinted_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorPrettyPrinted>>(
-          'clang_getCursorPrettyPrinted');
-  late final _dart_clang_getCursorPrettyPrinted _clang_getCursorPrettyPrinted =
-      _clang_getCursorPrettyPrinted_ptr
-          .asFunction<_dart_clang_getCursorPrettyPrinted>();
+  late final _clang_getCursorPrettyPrinted_ptr = _lookup<
+          ffi.NativeFunction<CXString Function(CXCursor, CXPrintingPolicy)>>(
+      'clang_getCursorPrettyPrinted');
+  late final _clang_getCursorPrettyPrinted = _clang_getCursorPrettyPrinted_ptr
+      .asFunction<CXString Function(CXCursor, CXPrintingPolicy)>();
 
   /// Retrieve the display name for the entity referenced by this cursor.
   CXString clang_getCursorDisplayName(
@@ -3658,11 +3759,10 @@
   }
 
   late final _clang_getCursorDisplayName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorDisplayName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_getCursorDisplayName');
-  late final _dart_clang_getCursorDisplayName _clang_getCursorDisplayName =
-      _clang_getCursorDisplayName_ptr
-          .asFunction<_dart_clang_getCursorDisplayName>();
+  late final _clang_getCursorDisplayName =
+      _clang_getCursorDisplayName_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// For a cursor that is a reference, retrieve a cursor representing the
   /// entity that it references.
@@ -3675,11 +3775,10 @@
   }
 
   late final _clang_getCursorReferenced_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorReferenced>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor)>>(
           'clang_getCursorReferenced');
-  late final _dart_clang_getCursorReferenced _clang_getCursorReferenced =
-      _clang_getCursorReferenced_ptr
-          .asFunction<_dart_clang_getCursorReferenced>();
+  late final _clang_getCursorReferenced =
+      _clang_getCursorReferenced_ptr.asFunction<CXCursor Function(CXCursor)>();
 
   /// For a cursor that is either a reference to or a declaration of some
   /// entity, retrieve a cursor that describes the definition of that entity.
@@ -3692,11 +3791,10 @@
   }
 
   late final _clang_getCursorDefinition_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorDefinition>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor)>>(
           'clang_getCursorDefinition');
-  late final _dart_clang_getCursorDefinition _clang_getCursorDefinition =
-      _clang_getCursorDefinition_ptr
-          .asFunction<_dart_clang_getCursorDefinition>();
+  late final _clang_getCursorDefinition =
+      _clang_getCursorDefinition_ptr.asFunction<CXCursor Function(CXCursor)>();
 
   /// Determine whether the declaration pointed to by this cursor is also a
   /// definition of that entity.
@@ -3709,11 +3807,10 @@
   }
 
   late final _clang_isCursorDefinition_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_isCursorDefinition>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_isCursorDefinition');
-  late final _dart_clang_isCursorDefinition _clang_isCursorDefinition =
-      _clang_isCursorDefinition_ptr
-          .asFunction<_dart_clang_isCursorDefinition>();
+  late final _clang_isCursorDefinition =
+      _clang_isCursorDefinition_ptr.asFunction<int Function(CXCursor)>();
 
   /// Retrieve the canonical cursor corresponding to the given cursor.
   CXCursor clang_getCanonicalCursor(
@@ -3725,11 +3822,10 @@
   }
 
   late final _clang_getCanonicalCursor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCanonicalCursor>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor)>>(
           'clang_getCanonicalCursor');
-  late final _dart_clang_getCanonicalCursor _clang_getCanonicalCursor =
-      _clang_getCanonicalCursor_ptr
-          .asFunction<_dart_clang_getCanonicalCursor>();
+  late final _clang_getCanonicalCursor =
+      _clang_getCanonicalCursor_ptr.asFunction<CXCursor Function(CXCursor)>();
 
   /// If the cursor points to a selector identifier in an Objective-C method or
   /// message expression, this returns the selector index.
@@ -3742,12 +3838,11 @@
   }
 
   late final _clang_Cursor_getObjCSelectorIndex_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getObjCSelectorIndex>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_getObjCSelectorIndex');
-  late final _dart_clang_Cursor_getObjCSelectorIndex
-      _clang_Cursor_getObjCSelectorIndex =
+  late final _clang_Cursor_getObjCSelectorIndex =
       _clang_Cursor_getObjCSelectorIndex_ptr
-          .asFunction<_dart_clang_Cursor_getObjCSelectorIndex>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Given a cursor pointing to a C++ method call or an Objective-C message,
   /// returns non-zero if the method/message is "dynamic", meaning:
@@ -3760,11 +3855,10 @@
   }
 
   late final _clang_Cursor_isDynamicCall_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isDynamicCall>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_Cursor_isDynamicCall');
-  late final _dart_clang_Cursor_isDynamicCall _clang_Cursor_isDynamicCall =
-      _clang_Cursor_isDynamicCall_ptr
-          .asFunction<_dart_clang_Cursor_isDynamicCall>();
+  late final _clang_Cursor_isDynamicCall =
+      _clang_Cursor_isDynamicCall_ptr.asFunction<int Function(CXCursor)>();
 
   /// Given a cursor pointing to an Objective-C message or property reference,
   /// or C++ method call, returns the CXType of the receiver.
@@ -3777,11 +3871,10 @@
   }
 
   late final _clang_Cursor_getReceiverType_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getReceiverType>>(
+      _lookup<ffi.NativeFunction<CXType Function(CXCursor)>>(
           'clang_Cursor_getReceiverType');
-  late final _dart_clang_Cursor_getReceiverType _clang_Cursor_getReceiverType =
-      _clang_Cursor_getReceiverType_ptr
-          .asFunction<_dart_clang_Cursor_getReceiverType>();
+  late final _clang_Cursor_getReceiverType =
+      _clang_Cursor_getReceiverType_ptr.asFunction<CXType Function(CXCursor)>();
 
   /// Given a cursor that represents a property declaration, return the
   /// associated property attributes. The bits are formed from
@@ -3797,12 +3890,11 @@
   }
 
   late final _clang_Cursor_getObjCPropertyAttributes_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getObjCPropertyAttributes>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor, ffi.Uint32)>>(
           'clang_Cursor_getObjCPropertyAttributes');
-  late final _dart_clang_Cursor_getObjCPropertyAttributes
-      _clang_Cursor_getObjCPropertyAttributes =
+  late final _clang_Cursor_getObjCPropertyAttributes =
       _clang_Cursor_getObjCPropertyAttributes_ptr
-          .asFunction<_dart_clang_Cursor_getObjCPropertyAttributes>();
+          .asFunction<int Function(CXCursor, int)>();
 
   /// Given a cursor that represents a property declaration, return the name of
   /// the method that implements the getter.
@@ -3815,12 +3907,11 @@
   }
 
   late final _clang_Cursor_getObjCPropertyGetterName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getObjCPropertyGetterName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_Cursor_getObjCPropertyGetterName');
-  late final _dart_clang_Cursor_getObjCPropertyGetterName
-      _clang_Cursor_getObjCPropertyGetterName =
+  late final _clang_Cursor_getObjCPropertyGetterName =
       _clang_Cursor_getObjCPropertyGetterName_ptr
-          .asFunction<_dart_clang_Cursor_getObjCPropertyGetterName>();
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Given a cursor that represents a property declaration, return the name of
   /// the method that implements the setter, if any.
@@ -3833,12 +3924,11 @@
   }
 
   late final _clang_Cursor_getObjCPropertySetterName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getObjCPropertySetterName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_Cursor_getObjCPropertySetterName');
-  late final _dart_clang_Cursor_getObjCPropertySetterName
-      _clang_Cursor_getObjCPropertySetterName =
+  late final _clang_Cursor_getObjCPropertySetterName =
       _clang_Cursor_getObjCPropertySetterName_ptr
-          .asFunction<_dart_clang_Cursor_getObjCPropertySetterName>();
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Given a cursor that represents an Objective-C method or parameter
   /// declaration, return the associated Objective-C qualifiers for the return
@@ -3853,12 +3943,11 @@
   }
 
   late final _clang_Cursor_getObjCDeclQualifiers_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getObjCDeclQualifiers>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_getObjCDeclQualifiers');
-  late final _dart_clang_Cursor_getObjCDeclQualifiers
-      _clang_Cursor_getObjCDeclQualifiers =
+  late final _clang_Cursor_getObjCDeclQualifiers =
       _clang_Cursor_getObjCDeclQualifiers_ptr
-          .asFunction<_dart_clang_Cursor_getObjCDeclQualifiers>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Given a cursor that represents an Objective-C method or property
   /// declaration, return non-zero if the declaration was affected by
@@ -3873,11 +3962,10 @@
   }
 
   late final _clang_Cursor_isObjCOptional_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isObjCOptional>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isObjCOptional');
-  late final _dart_clang_Cursor_isObjCOptional _clang_Cursor_isObjCOptional =
-      _clang_Cursor_isObjCOptional_ptr
-          .asFunction<_dart_clang_Cursor_isObjCOptional>();
+  late final _clang_Cursor_isObjCOptional =
+      _clang_Cursor_isObjCOptional_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns non-zero if the given cursor is a variadic function or method.
   int clang_Cursor_isVariadic(
@@ -3889,10 +3977,10 @@
   }
 
   late final _clang_Cursor_isVariadic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isVariadic>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_Cursor_isVariadic');
-  late final _dart_clang_Cursor_isVariadic _clang_Cursor_isVariadic =
-      _clang_Cursor_isVariadic_ptr.asFunction<_dart_clang_Cursor_isVariadic>();
+  late final _clang_Cursor_isVariadic =
+      _clang_Cursor_isVariadic_ptr.asFunction<int Function(CXCursor)>();
 
   /// Returns non-zero if the given cursor points to a symbol marked with
   /// external_source_symbol attribute.
@@ -3910,12 +3998,17 @@
     );
   }
 
-  late final _clang_Cursor_isExternalSymbol_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_isExternalSymbol>>(
-          'clang_Cursor_isExternalSymbol');
-  late final _dart_clang_Cursor_isExternalSymbol
-      _clang_Cursor_isExternalSymbol = _clang_Cursor_isExternalSymbol_ptr
-          .asFunction<_dart_clang_Cursor_isExternalSymbol>();
+  late final _clang_Cursor_isExternalSymbol_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(
+              CXCursor,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_Cursor_isExternalSymbol');
+  late final _clang_Cursor_isExternalSymbol =
+      _clang_Cursor_isExternalSymbol_ptr.asFunction<
+          int Function(CXCursor, ffi.Pointer<CXString>, ffi.Pointer<CXString>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Given a cursor that represents a declaration, return the associated
   /// comment's source range. The range may include multiple consecutive
@@ -3929,11 +4022,10 @@
   }
 
   late final _clang_Cursor_getCommentRange_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getCommentRange>>(
+      _lookup<ffi.NativeFunction<CXSourceRange Function(CXCursor)>>(
           'clang_Cursor_getCommentRange');
-  late final _dart_clang_Cursor_getCommentRange _clang_Cursor_getCommentRange =
-      _clang_Cursor_getCommentRange_ptr
-          .asFunction<_dart_clang_Cursor_getCommentRange>();
+  late final _clang_Cursor_getCommentRange = _clang_Cursor_getCommentRange_ptr
+      .asFunction<CXSourceRange Function(CXCursor)>();
 
   /// Given a cursor that represents a declaration, return the associated
   /// comment text, including comment markers.
@@ -3946,11 +4038,11 @@
   }
 
   late final _clang_Cursor_getRawCommentText_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getRawCommentText>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_Cursor_getRawCommentText');
-  late final _dart_clang_Cursor_getRawCommentText
-      _clang_Cursor_getRawCommentText = _clang_Cursor_getRawCommentText_ptr
-          .asFunction<_dart_clang_Cursor_getRawCommentText>();
+  late final _clang_Cursor_getRawCommentText =
+      _clang_Cursor_getRawCommentText_ptr
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Given a cursor that represents a documentable entity (e.g., declaration),
   /// return the associated first paragraph.
@@ -3963,11 +4055,11 @@
   }
 
   late final _clang_Cursor_getBriefCommentText_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getBriefCommentText>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_Cursor_getBriefCommentText');
-  late final _dart_clang_Cursor_getBriefCommentText
-      _clang_Cursor_getBriefCommentText = _clang_Cursor_getBriefCommentText_ptr
-          .asFunction<_dart_clang_Cursor_getBriefCommentText>();
+  late final _clang_Cursor_getBriefCommentText =
+      _clang_Cursor_getBriefCommentText_ptr
+          .asFunction<CXString Function(CXCursor)>();
 
   /// Retrieve the CXString representing the mangled name of the cursor.
   CXString clang_Cursor_getMangling(
@@ -3979,11 +4071,10 @@
   }
 
   late final _clang_Cursor_getMangling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getMangling>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCursor)>>(
           'clang_Cursor_getMangling');
-  late final _dart_clang_Cursor_getMangling _clang_Cursor_getMangling =
-      _clang_Cursor_getMangling_ptr
-          .asFunction<_dart_clang_Cursor_getMangling>();
+  late final _clang_Cursor_getMangling =
+      _clang_Cursor_getMangling_ptr.asFunction<CXString Function(CXCursor)>();
 
   /// Retrieve the CXStrings representing the mangled symbols of the C++
   /// constructor or destructor at the cursor.
@@ -3996,11 +4087,10 @@
   }
 
   late final _clang_Cursor_getCXXManglings_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getCXXManglings>>(
+      _lookup<ffi.NativeFunction<ffi.Pointer<CXStringSet> Function(CXCursor)>>(
           'clang_Cursor_getCXXManglings');
-  late final _dart_clang_Cursor_getCXXManglings _clang_Cursor_getCXXManglings =
-      _clang_Cursor_getCXXManglings_ptr
-          .asFunction<_dart_clang_Cursor_getCXXManglings>();
+  late final _clang_Cursor_getCXXManglings = _clang_Cursor_getCXXManglings_ptr
+      .asFunction<ffi.Pointer<CXStringSet> Function(CXCursor)>();
 
   /// Retrieve the CXStrings representing the mangled symbols of the ObjC class
   /// interface or implementation at the cursor.
@@ -4013,14 +4103,13 @@
   }
 
   late final _clang_Cursor_getObjCManglings_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getObjCManglings>>(
+      _lookup<ffi.NativeFunction<ffi.Pointer<CXStringSet> Function(CXCursor)>>(
           'clang_Cursor_getObjCManglings');
-  late final _dart_clang_Cursor_getObjCManglings
-      _clang_Cursor_getObjCManglings = _clang_Cursor_getObjCManglings_ptr
-          .asFunction<_dart_clang_Cursor_getObjCManglings>();
+  late final _clang_Cursor_getObjCManglings = _clang_Cursor_getObjCManglings_ptr
+      .asFunction<ffi.Pointer<CXStringSet> Function(CXCursor)>();
 
   /// Given a CXCursor_ModuleImportDecl cursor, return the associated module.
-  ffi.Pointer<ffi.Void> clang_Cursor_getModule(
+  CXModule clang_Cursor_getModule(
     CXCursor C,
   ) {
     return _clang_Cursor_getModule(
@@ -4029,16 +4118,16 @@
   }
 
   late final _clang_Cursor_getModule_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_getModule>>(
+      _lookup<ffi.NativeFunction<CXModule Function(CXCursor)>>(
           'clang_Cursor_getModule');
-  late final _dart_clang_Cursor_getModule _clang_Cursor_getModule =
-      _clang_Cursor_getModule_ptr.asFunction<_dart_clang_Cursor_getModule>();
+  late final _clang_Cursor_getModule =
+      _clang_Cursor_getModule_ptr.asFunction<CXModule Function(CXCursor)>();
 
   /// Given a CXFile header file, return the module that contains it, if one
   /// exists.
-  ffi.Pointer<ffi.Void> clang_getModuleForFile(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
-    ffi.Pointer<ffi.Void> arg1,
+  CXModule clang_getModuleForFile(
+    CXTranslationUnit arg0,
+    CXFile arg1,
   ) {
     return _clang_getModuleForFile(
       arg0,
@@ -4047,14 +4136,14 @@
   }
 
   late final _clang_getModuleForFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getModuleForFile>>(
+      _lookup<ffi.NativeFunction<CXModule Function(CXTranslationUnit, CXFile)>>(
           'clang_getModuleForFile');
-  late final _dart_clang_getModuleForFile _clang_getModuleForFile =
-      _clang_getModuleForFile_ptr.asFunction<_dart_clang_getModuleForFile>();
+  late final _clang_getModuleForFile = _clang_getModuleForFile_ptr
+      .asFunction<CXModule Function(CXTranslationUnit, CXFile)>();
 
   /// Returns the module file where the provided module object came from.
-  ffi.Pointer<ffi.Void> clang_Module_getASTFile(
-    ffi.Pointer<ffi.Void> Module,
+  CXFile clang_Module_getASTFile(
+    CXModule Module,
   ) {
     return _clang_Module_getASTFile(
       Module,
@@ -4062,15 +4151,15 @@
   }
 
   late final _clang_Module_getASTFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Module_getASTFile>>(
+      _lookup<ffi.NativeFunction<CXFile Function(CXModule)>>(
           'clang_Module_getASTFile');
-  late final _dart_clang_Module_getASTFile _clang_Module_getASTFile =
-      _clang_Module_getASTFile_ptr.asFunction<_dart_clang_Module_getASTFile>();
+  late final _clang_Module_getASTFile =
+      _clang_Module_getASTFile_ptr.asFunction<CXFile Function(CXModule)>();
 
   /// Returns the parent of a sub-module or NULL if the given module is
   /// top-level, e.g. for 'std.vector' it will return the 'std' module.
-  ffi.Pointer<ffi.Void> clang_Module_getParent(
-    ffi.Pointer<ffi.Void> Module,
+  CXModule clang_Module_getParent(
+    CXModule Module,
   ) {
     return _clang_Module_getParent(
       Module,
@@ -4078,15 +4167,15 @@
   }
 
   late final _clang_Module_getParent_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Module_getParent>>(
+      _lookup<ffi.NativeFunction<CXModule Function(CXModule)>>(
           'clang_Module_getParent');
-  late final _dart_clang_Module_getParent _clang_Module_getParent =
-      _clang_Module_getParent_ptr.asFunction<_dart_clang_Module_getParent>();
+  late final _clang_Module_getParent =
+      _clang_Module_getParent_ptr.asFunction<CXModule Function(CXModule)>();
 
   /// Returns the name of the module, e.g. for the 'std.vector' sub-module it
   /// will return "vector".
   CXString clang_Module_getName(
-    ffi.Pointer<ffi.Void> Module,
+    CXModule Module,
   ) {
     return _clang_Module_getName(
       Module,
@@ -4094,14 +4183,14 @@
   }
 
   late final _clang_Module_getName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Module_getName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXModule)>>(
           'clang_Module_getName');
-  late final _dart_clang_Module_getName _clang_Module_getName =
-      _clang_Module_getName_ptr.asFunction<_dart_clang_Module_getName>();
+  late final _clang_Module_getName =
+      _clang_Module_getName_ptr.asFunction<CXString Function(CXModule)>();
 
   /// Returns the full name of the module, e.g. "std.vector".
   CXString clang_Module_getFullName(
-    ffi.Pointer<ffi.Void> Module,
+    CXModule Module,
   ) {
     return _clang_Module_getFullName(
       Module,
@@ -4109,15 +4198,14 @@
   }
 
   late final _clang_Module_getFullName_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Module_getFullName>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXModule)>>(
           'clang_Module_getFullName');
-  late final _dart_clang_Module_getFullName _clang_Module_getFullName =
-      _clang_Module_getFullName_ptr
-          .asFunction<_dart_clang_Module_getFullName>();
+  late final _clang_Module_getFullName =
+      _clang_Module_getFullName_ptr.asFunction<CXString Function(CXModule)>();
 
   /// Returns non-zero if the module is a system one.
   int clang_Module_isSystem(
-    ffi.Pointer<ffi.Void> Module,
+    CXModule Module,
   ) {
     return _clang_Module_isSystem(
       Module,
@@ -4125,15 +4213,15 @@
   }
 
   late final _clang_Module_isSystem_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Module_isSystem>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXModule)>>(
           'clang_Module_isSystem');
-  late final _dart_clang_Module_isSystem _clang_Module_isSystem =
-      _clang_Module_isSystem_ptr.asFunction<_dart_clang_Module_isSystem>();
+  late final _clang_Module_isSystem =
+      _clang_Module_isSystem_ptr.asFunction<int Function(CXModule)>();
 
   /// Returns the number of top level headers associated with this module.
   int clang_Module_getNumTopLevelHeaders(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
-    ffi.Pointer<ffi.Void> Module,
+    CXTranslationUnit arg0,
+    CXModule Module,
   ) {
     return _clang_Module_getNumTopLevelHeaders(
       arg0,
@@ -4141,18 +4229,17 @@
     );
   }
 
-  late final _clang_Module_getNumTopLevelHeaders_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Module_getNumTopLevelHeaders>>(
-          'clang_Module_getNumTopLevelHeaders');
-  late final _dart_clang_Module_getNumTopLevelHeaders
-      _clang_Module_getNumTopLevelHeaders =
+  late final _clang_Module_getNumTopLevelHeaders_ptr = _lookup<
+          ffi.NativeFunction<ffi.Uint32 Function(CXTranslationUnit, CXModule)>>(
+      'clang_Module_getNumTopLevelHeaders');
+  late final _clang_Module_getNumTopLevelHeaders =
       _clang_Module_getNumTopLevelHeaders_ptr
-          .asFunction<_dart_clang_Module_getNumTopLevelHeaders>();
+          .asFunction<int Function(CXTranslationUnit, CXModule)>();
 
   /// Returns the specified top level header associated with the module.
-  ffi.Pointer<ffi.Void> clang_Module_getTopLevelHeader(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
-    ffi.Pointer<ffi.Void> Module,
+  CXFile clang_Module_getTopLevelHeader(
+    CXTranslationUnit arg0,
+    CXModule Module,
     int Index,
   ) {
     return _clang_Module_getTopLevelHeader(
@@ -4162,12 +4249,13 @@
     );
   }
 
-  late final _clang_Module_getTopLevelHeader_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Module_getTopLevelHeader>>(
-          'clang_Module_getTopLevelHeader');
-  late final _dart_clang_Module_getTopLevelHeader
-      _clang_Module_getTopLevelHeader = _clang_Module_getTopLevelHeader_ptr
-          .asFunction<_dart_clang_Module_getTopLevelHeader>();
+  late final _clang_Module_getTopLevelHeader_ptr = _lookup<
+      ffi.NativeFunction<
+          CXFile Function(CXTranslationUnit, CXModule,
+              ffi.Uint32)>>('clang_Module_getTopLevelHeader');
+  late final _clang_Module_getTopLevelHeader =
+      _clang_Module_getTopLevelHeader_ptr
+          .asFunction<CXFile Function(CXTranslationUnit, CXModule, int)>();
 
   /// Determine if a C++ constructor is a converting constructor.
   int clang_CXXConstructor_isConvertingConstructor(
@@ -4178,13 +4266,12 @@
     );
   }
 
-  late final _clang_CXXConstructor_isConvertingConstructor_ptr = _lookup<
-          ffi.NativeFunction<_c_clang_CXXConstructor_isConvertingConstructor>>(
-      'clang_CXXConstructor_isConvertingConstructor');
-  late final _dart_clang_CXXConstructor_isConvertingConstructor
-      _clang_CXXConstructor_isConvertingConstructor =
+  late final _clang_CXXConstructor_isConvertingConstructor_ptr =
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
+          'clang_CXXConstructor_isConvertingConstructor');
+  late final _clang_CXXConstructor_isConvertingConstructor =
       _clang_CXXConstructor_isConvertingConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isConvertingConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ constructor is a copy constructor.
   int clang_CXXConstructor_isCopyConstructor(
@@ -4196,12 +4283,11 @@
   }
 
   late final _clang_CXXConstructor_isCopyConstructor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXConstructor_isCopyConstructor>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXConstructor_isCopyConstructor');
-  late final _dart_clang_CXXConstructor_isCopyConstructor
-      _clang_CXXConstructor_isCopyConstructor =
+  late final _clang_CXXConstructor_isCopyConstructor =
       _clang_CXXConstructor_isCopyConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isCopyConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ constructor is the default constructor.
   int clang_CXXConstructor_isDefaultConstructor(
@@ -4213,12 +4299,11 @@
   }
 
   late final _clang_CXXConstructor_isDefaultConstructor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXConstructor_isDefaultConstructor>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXConstructor_isDefaultConstructor');
-  late final _dart_clang_CXXConstructor_isDefaultConstructor
-      _clang_CXXConstructor_isDefaultConstructor =
+  late final _clang_CXXConstructor_isDefaultConstructor =
       _clang_CXXConstructor_isDefaultConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isDefaultConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ constructor is a move constructor.
   int clang_CXXConstructor_isMoveConstructor(
@@ -4230,12 +4315,11 @@
   }
 
   late final _clang_CXXConstructor_isMoveConstructor_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXConstructor_isMoveConstructor>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXConstructor_isMoveConstructor');
-  late final _dart_clang_CXXConstructor_isMoveConstructor
-      _clang_CXXConstructor_isMoveConstructor =
+  late final _clang_CXXConstructor_isMoveConstructor =
       _clang_CXXConstructor_isMoveConstructor_ptr
-          .asFunction<_dart_clang_CXXConstructor_isMoveConstructor>();
+          .asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ field is declared 'mutable'.
   int clang_CXXField_isMutable(
@@ -4247,11 +4331,10 @@
   }
 
   late final _clang_CXXField_isMutable_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXField_isMutable>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXField_isMutable');
-  late final _dart_clang_CXXField_isMutable _clang_CXXField_isMutable =
-      _clang_CXXField_isMutable_ptr
-          .asFunction<_dart_clang_CXXField_isMutable>();
+  late final _clang_CXXField_isMutable =
+      _clang_CXXField_isMutable_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ method is declared '= default'.
   int clang_CXXMethod_isDefaulted(
@@ -4263,11 +4346,10 @@
   }
 
   late final _clang_CXXMethod_isDefaulted_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXMethod_isDefaulted>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXMethod_isDefaulted');
-  late final _dart_clang_CXXMethod_isDefaulted _clang_CXXMethod_isDefaulted =
-      _clang_CXXMethod_isDefaulted_ptr
-          .asFunction<_dart_clang_CXXMethod_isDefaulted>();
+  late final _clang_CXXMethod_isDefaulted =
+      _clang_CXXMethod_isDefaulted_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is pure
   /// virtual.
@@ -4280,11 +4362,10 @@
   }
 
   late final _clang_CXXMethod_isPureVirtual_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXMethod_isPureVirtual>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXMethod_isPureVirtual');
-  late final _dart_clang_CXXMethod_isPureVirtual
-      _clang_CXXMethod_isPureVirtual = _clang_CXXMethod_isPureVirtual_ptr
-          .asFunction<_dart_clang_CXXMethod_isPureVirtual>();
+  late final _clang_CXXMethod_isPureVirtual =
+      _clang_CXXMethod_isPureVirtual_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is declared
   /// 'static'.
@@ -4297,11 +4378,10 @@
   }
 
   late final _clang_CXXMethod_isStatic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXMethod_isStatic>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXMethod_isStatic');
-  late final _dart_clang_CXXMethod_isStatic _clang_CXXMethod_isStatic =
-      _clang_CXXMethod_isStatic_ptr
-          .asFunction<_dart_clang_CXXMethod_isStatic>();
+  late final _clang_CXXMethod_isStatic =
+      _clang_CXXMethod_isStatic_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is
   /// explicitly declared 'virtual' or if it overrides a virtual method from one
@@ -4315,11 +4395,10 @@
   }
 
   late final _clang_CXXMethod_isVirtual_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXMethod_isVirtual>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXMethod_isVirtual');
-  late final _dart_clang_CXXMethod_isVirtual _clang_CXXMethod_isVirtual =
-      _clang_CXXMethod_isVirtual_ptr
-          .asFunction<_dart_clang_CXXMethod_isVirtual>();
+  late final _clang_CXXMethod_isVirtual =
+      _clang_CXXMethod_isVirtual_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ record is abstract, i.e. whether a class or struct has
   /// a pure virtual member function.
@@ -4332,11 +4411,10 @@
   }
 
   late final _clang_CXXRecord_isAbstract_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXRecord_isAbstract>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXRecord_isAbstract');
-  late final _dart_clang_CXXRecord_isAbstract _clang_CXXRecord_isAbstract =
-      _clang_CXXRecord_isAbstract_ptr
-          .asFunction<_dart_clang_CXXRecord_isAbstract>();
+  late final _clang_CXXRecord_isAbstract =
+      _clang_CXXRecord_isAbstract_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if an enum declaration refers to a scoped enum.
   int clang_EnumDecl_isScoped(
@@ -4348,10 +4426,10 @@
   }
 
   late final _clang_EnumDecl_isScoped_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EnumDecl_isScoped>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_EnumDecl_isScoped');
-  late final _dart_clang_EnumDecl_isScoped _clang_EnumDecl_isScoped =
-      _clang_EnumDecl_isScoped_ptr.asFunction<_dart_clang_EnumDecl_isScoped>();
+  late final _clang_EnumDecl_isScoped =
+      _clang_EnumDecl_isScoped_ptr.asFunction<int Function(CXCursor)>();
 
   /// Determine if a C++ member function or member function template is declared
   /// 'const'.
@@ -4364,10 +4442,10 @@
   }
 
   late final _clang_CXXMethod_isConst_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_CXXMethod_isConst>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCursor)>>(
           'clang_CXXMethod_isConst');
-  late final _dart_clang_CXXMethod_isConst _clang_CXXMethod_isConst =
-      _clang_CXXMethod_isConst_ptr.asFunction<_dart_clang_CXXMethod_isConst>();
+  late final _clang_CXXMethod_isConst =
+      _clang_CXXMethod_isConst_ptr.asFunction<int Function(CXCursor)>();
 
   /// Given a cursor that represents a template, determine the cursor kind of
   /// the specializations would be generated by instantiating the template.
@@ -4380,11 +4458,10 @@
   }
 
   late final _clang_getTemplateCursorKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTemplateCursorKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCursor)>>(
           'clang_getTemplateCursorKind');
-  late final _dart_clang_getTemplateCursorKind _clang_getTemplateCursorKind =
-      _clang_getTemplateCursorKind_ptr
-          .asFunction<_dart_clang_getTemplateCursorKind>();
+  late final _clang_getTemplateCursorKind =
+      _clang_getTemplateCursorKind_ptr.asFunction<int Function(CXCursor)>();
 
   /// Given a cursor that may represent a specialization or instantiation of a
   /// template, retrieve the cursor that represents the template that it
@@ -4398,12 +4475,11 @@
   }
 
   late final _clang_getSpecializedCursorTemplate_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getSpecializedCursorTemplate>>(
+      _lookup<ffi.NativeFunction<CXCursor Function(CXCursor)>>(
           'clang_getSpecializedCursorTemplate');
-  late final _dart_clang_getSpecializedCursorTemplate
-      _clang_getSpecializedCursorTemplate =
+  late final _clang_getSpecializedCursorTemplate =
       _clang_getSpecializedCursorTemplate_ptr
-          .asFunction<_dart_clang_getSpecializedCursorTemplate>();
+          .asFunction<CXCursor Function(CXCursor)>();
 
   /// Given a cursor that references something else, return the source range
   /// covering that reference.
@@ -4419,17 +4495,17 @@
     );
   }
 
-  late final _clang_getCursorReferenceNameRange_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorReferenceNameRange>>(
-          'clang_getCursorReferenceNameRange');
-  late final _dart_clang_getCursorReferenceNameRange
-      _clang_getCursorReferenceNameRange =
+  late final _clang_getCursorReferenceNameRange_ptr = _lookup<
+      ffi.NativeFunction<
+          CXSourceRange Function(CXCursor, ffi.Uint32,
+              ffi.Uint32)>>('clang_getCursorReferenceNameRange');
+  late final _clang_getCursorReferenceNameRange =
       _clang_getCursorReferenceNameRange_ptr
-          .asFunction<_dart_clang_getCursorReferenceNameRange>();
+          .asFunction<CXSourceRange Function(CXCursor, int, int)>();
 
   /// Get the raw lexical token starting with the given location.
   ffi.Pointer<CXToken> clang_getToken(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     CXSourceLocation Location,
   ) {
     return _clang_getToken(
@@ -4438,10 +4514,12 @@
     );
   }
 
-  late final _clang_getToken_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getToken>>('clang_getToken');
-  late final _dart_clang_getToken _clang_getToken =
-      _clang_getToken_ptr.asFunction<_dart_clang_getToken>();
+  late final _clang_getToken_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<CXToken> Function(
+              CXTranslationUnit, CXSourceLocation)>>('clang_getToken');
+  late final _clang_getToken = _clang_getToken_ptr.asFunction<
+      ffi.Pointer<CXToken> Function(CXTranslationUnit, CXSourceLocation)>();
 
   /// Determine the kind of the given token.
   int clang_getTokenKind(
@@ -4453,13 +4531,14 @@
   }
 
   late final _clang_getTokenKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTokenKind>>('clang_getTokenKind');
-  late final _dart_clang_getTokenKind _clang_getTokenKind =
-      _clang_getTokenKind_ptr.asFunction<_dart_clang_getTokenKind>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXToken)>>(
+          'clang_getTokenKind');
+  late final _clang_getTokenKind =
+      _clang_getTokenKind_ptr.asFunction<int Function(CXToken)>();
 
   /// Determine the spelling of the given token.
   CXString clang_getTokenSpelling(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXToken arg1,
   ) {
     return _clang_getTokenSpelling(
@@ -4468,15 +4547,15 @@
     );
   }
 
-  late final _clang_getTokenSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTokenSpelling>>(
-          'clang_getTokenSpelling');
-  late final _dart_clang_getTokenSpelling _clang_getTokenSpelling =
-      _clang_getTokenSpelling_ptr.asFunction<_dart_clang_getTokenSpelling>();
+  late final _clang_getTokenSpelling_ptr = _lookup<
+          ffi.NativeFunction<CXString Function(CXTranslationUnit, CXToken)>>(
+      'clang_getTokenSpelling');
+  late final _clang_getTokenSpelling = _clang_getTokenSpelling_ptr
+      .asFunction<CXString Function(CXTranslationUnit, CXToken)>();
 
   /// Retrieve the source location of the given token.
   CXSourceLocation clang_getTokenLocation(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXToken arg1,
   ) {
     return _clang_getTokenLocation(
@@ -4485,15 +4564,16 @@
     );
   }
 
-  late final _clang_getTokenLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTokenLocation>>(
-          'clang_getTokenLocation');
-  late final _dart_clang_getTokenLocation _clang_getTokenLocation =
-      _clang_getTokenLocation_ptr.asFunction<_dart_clang_getTokenLocation>();
+  late final _clang_getTokenLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          CXSourceLocation Function(
+              CXTranslationUnit, CXToken)>>('clang_getTokenLocation');
+  late final _clang_getTokenLocation = _clang_getTokenLocation_ptr
+      .asFunction<CXSourceLocation Function(CXTranslationUnit, CXToken)>();
 
   /// Retrieve a source range that covers the given token.
   CXSourceRange clang_getTokenExtent(
-    ffi.Pointer<CXTranslationUnitImpl> arg0,
+    CXTranslationUnit arg0,
     CXToken arg1,
   ) {
     return _clang_getTokenExtent(
@@ -4502,16 +4582,17 @@
     );
   }
 
-  late final _clang_getTokenExtent_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getTokenExtent>>(
-          'clang_getTokenExtent');
-  late final _dart_clang_getTokenExtent _clang_getTokenExtent =
-      _clang_getTokenExtent_ptr.asFunction<_dart_clang_getTokenExtent>();
+  late final _clang_getTokenExtent_ptr = _lookup<
+      ffi.NativeFunction<
+          CXSourceRange Function(
+              CXTranslationUnit, CXToken)>>('clang_getTokenExtent');
+  late final _clang_getTokenExtent = _clang_getTokenExtent_ptr
+      .asFunction<CXSourceRange Function(CXTranslationUnit, CXToken)>();
 
   /// Tokenize the source code described by the given range into raw lexical
   /// tokens.
   void clang_tokenize(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     CXSourceRange Range,
     ffi.Pointer<ffi.Pointer<CXToken>> Tokens,
     ffi.Pointer<ffi.Uint32> NumTokens,
@@ -4524,15 +4605,21 @@
     );
   }
 
-  late final _clang_tokenize_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_tokenize>>('clang_tokenize');
-  late final _dart_clang_tokenize _clang_tokenize =
-      _clang_tokenize_ptr.asFunction<_dart_clang_tokenize>();
+  late final _clang_tokenize_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXTranslationUnit,
+              CXSourceRange,
+              ffi.Pointer<ffi.Pointer<CXToken>>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_tokenize');
+  late final _clang_tokenize = _clang_tokenize_ptr.asFunction<
+      void Function(CXTranslationUnit, CXSourceRange,
+          ffi.Pointer<ffi.Pointer<CXToken>>, ffi.Pointer<ffi.Uint32>)>();
 
   /// Annotate the given set of tokens by providing cursors for each token that
   /// can be mapped to a specific entity within the abstract syntax tree.
   void clang_annotateTokens(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<CXToken> Tokens,
     int NumTokens,
     ffi.Pointer<CXCursor> Cursors,
@@ -4545,15 +4632,17 @@
     );
   }
 
-  late final _clang_annotateTokens_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_annotateTokens>>(
-          'clang_annotateTokens');
-  late final _dart_clang_annotateTokens _clang_annotateTokens =
-      _clang_annotateTokens_ptr.asFunction<_dart_clang_annotateTokens>();
+  late final _clang_annotateTokens_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(CXTranslationUnit, ffi.Pointer<CXToken>, ffi.Uint32,
+              ffi.Pointer<CXCursor>)>>('clang_annotateTokens');
+  late final _clang_annotateTokens = _clang_annotateTokens_ptr.asFunction<
+      void Function(CXTranslationUnit, ffi.Pointer<CXToken>, int,
+          ffi.Pointer<CXCursor>)>();
 
   /// Free the given set of tokens.
   void clang_disposeTokens(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<CXToken> Tokens,
     int NumTokens,
   ) {
@@ -4564,11 +4653,12 @@
     );
   }
 
-  late final _clang_disposeTokens_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeTokens>>(
-          'clang_disposeTokens');
-  late final _dart_clang_disposeTokens _clang_disposeTokens =
-      _clang_disposeTokens_ptr.asFunction<_dart_clang_disposeTokens>();
+  late final _clang_disposeTokens_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(CXTranslationUnit, ffi.Pointer<CXToken>,
+              ffi.Uint32)>>('clang_disposeTokens');
+  late final _clang_disposeTokens = _clang_disposeTokens_ptr.asFunction<
+      void Function(CXTranslationUnit, ffi.Pointer<CXToken>, int)>();
 
   /// These routines are used for testing and debugging, only, and should not be
   /// relied upon.
@@ -4581,11 +4671,10 @@
   }
 
   late final _clang_getCursorKindSpelling_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorKindSpelling>>(
+      _lookup<ffi.NativeFunction<CXString Function(ffi.Int32)>>(
           'clang_getCursorKindSpelling');
-  late final _dart_clang_getCursorKindSpelling _clang_getCursorKindSpelling =
-      _clang_getCursorKindSpelling_ptr
-          .asFunction<_dart_clang_getCursorKindSpelling>();
+  late final _clang_getCursorKindSpelling =
+      _clang_getCursorKindSpelling_ptr.asFunction<CXString Function(int)>();
 
   void clang_getDefinitionSpellingAndExtent(
     CXCursor arg0,
@@ -4607,26 +4696,41 @@
     );
   }
 
-  late final _clang_getDefinitionSpellingAndExtent_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getDefinitionSpellingAndExtent>>(
-          'clang_getDefinitionSpellingAndExtent');
-  late final _dart_clang_getDefinitionSpellingAndExtent
-      _clang_getDefinitionSpellingAndExtent =
-      _clang_getDefinitionSpellingAndExtent_ptr
-          .asFunction<_dart_clang_getDefinitionSpellingAndExtent>();
+  late final _clang_getDefinitionSpellingAndExtent_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  CXCursor,
+                  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                  ffi.Pointer<ffi.Uint32>,
+                  ffi.Pointer<ffi.Uint32>,
+                  ffi.Pointer<ffi.Uint32>,
+                  ffi.Pointer<ffi.Uint32>)>>(
+      'clang_getDefinitionSpellingAndExtent');
+  late final _clang_getDefinitionSpellingAndExtent =
+      _clang_getDefinitionSpellingAndExtent_ptr.asFunction<
+          void Function(
+              CXCursor,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   void clang_enableStackTraces() {
     return _clang_enableStackTraces();
   }
 
   late final _clang_enableStackTraces_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_enableStackTraces>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>(
           'clang_enableStackTraces');
-  late final _dart_clang_enableStackTraces _clang_enableStackTraces =
-      _clang_enableStackTraces_ptr.asFunction<_dart_clang_enableStackTraces>();
+  late final _clang_enableStackTraces =
+      _clang_enableStackTraces_ptr.asFunction<void Function()>();
 
   void clang_executeOnThread(
-    ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        fn,
     ffi.Pointer<ffi.Void> user_data,
     int stack_size,
   ) {
@@ -4637,15 +4741,23 @@
     );
   }
 
-  late final _clang_executeOnThread_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_executeOnThread>>(
-          'clang_executeOnThread');
-  late final _dart_clang_executeOnThread _clang_executeOnThread =
-      _clang_executeOnThread_ptr.asFunction<_dart_clang_executeOnThread>();
+  late final _clang_executeOnThread_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<
+                  ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Uint32)>>('clang_executeOnThread');
+  late final _clang_executeOnThread = _clang_executeOnThread_ptr.asFunction<
+      void Function(
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+          ffi.Pointer<ffi.Void>,
+          int)>();
 
   /// Determine the kind of a particular chunk within a completion string.
   int clang_getCompletionChunkKind(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     int chunk_number,
   ) {
     return _clang_getCompletionChunkKind(
@@ -4654,17 +4766,17 @@
     );
   }
 
-  late final _clang_getCompletionChunkKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionChunkKind>>(
-          'clang_getCompletionChunkKind');
-  late final _dart_clang_getCompletionChunkKind _clang_getCompletionChunkKind =
-      _clang_getCompletionChunkKind_ptr
-          .asFunction<_dart_clang_getCompletionChunkKind>();
+  late final _clang_getCompletionChunkKind_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXCompletionString, ffi.Uint32)>>('clang_getCompletionChunkKind');
+  late final _clang_getCompletionChunkKind = _clang_getCompletionChunkKind_ptr
+      .asFunction<int Function(CXCompletionString, int)>();
 
   /// Retrieve the text associated with a particular chunk within a completion
   /// string.
   CXString clang_getCompletionChunkText(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     int chunk_number,
   ) {
     return _clang_getCompletionChunkText(
@@ -4673,17 +4785,17 @@
     );
   }
 
-  late final _clang_getCompletionChunkText_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionChunkText>>(
-          'clang_getCompletionChunkText');
-  late final _dart_clang_getCompletionChunkText _clang_getCompletionChunkText =
-      _clang_getCompletionChunkText_ptr
-          .asFunction<_dart_clang_getCompletionChunkText>();
+  late final _clang_getCompletionChunkText_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(
+              CXCompletionString, ffi.Uint32)>>('clang_getCompletionChunkText');
+  late final _clang_getCompletionChunkText = _clang_getCompletionChunkText_ptr
+      .asFunction<CXString Function(CXCompletionString, int)>();
 
   /// Retrieve the completion string associated with a particular chunk within a
   /// completion string.
-  ffi.Pointer<ffi.Void> clang_getCompletionChunkCompletionString(
-    ffi.Pointer<ffi.Void> completion_string,
+  CXCompletionString clang_getCompletionChunkCompletionString(
+    CXCompletionString completion_string,
     int chunk_number,
   ) {
     return _clang_getCompletionChunkCompletionString(
@@ -4692,17 +4804,17 @@
     );
   }
 
-  late final _clang_getCompletionChunkCompletionString_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionChunkCompletionString>>(
-          'clang_getCompletionChunkCompletionString');
-  late final _dart_clang_getCompletionChunkCompletionString
-      _clang_getCompletionChunkCompletionString =
+  late final _clang_getCompletionChunkCompletionString_ptr = _lookup<
+      ffi.NativeFunction<
+          CXCompletionString Function(CXCompletionString,
+              ffi.Uint32)>>('clang_getCompletionChunkCompletionString');
+  late final _clang_getCompletionChunkCompletionString =
       _clang_getCompletionChunkCompletionString_ptr
-          .asFunction<_dart_clang_getCompletionChunkCompletionString>();
+          .asFunction<CXCompletionString Function(CXCompletionString, int)>();
 
   /// Retrieve the number of chunks in the given code-completion string.
   int clang_getNumCompletionChunks(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getNumCompletionChunks(
       completion_string,
@@ -4710,15 +4822,14 @@
   }
 
   late final _clang_getNumCompletionChunks_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getNumCompletionChunks>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCompletionString)>>(
           'clang_getNumCompletionChunks');
-  late final _dart_clang_getNumCompletionChunks _clang_getNumCompletionChunks =
-      _clang_getNumCompletionChunks_ptr
-          .asFunction<_dart_clang_getNumCompletionChunks>();
+  late final _clang_getNumCompletionChunks = _clang_getNumCompletionChunks_ptr
+      .asFunction<int Function(CXCompletionString)>();
 
   /// Determine the priority of this code completion.
   int clang_getCompletionPriority(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionPriority(
       completion_string,
@@ -4726,16 +4837,15 @@
   }
 
   late final _clang_getCompletionPriority_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionPriority>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCompletionString)>>(
           'clang_getCompletionPriority');
-  late final _dart_clang_getCompletionPriority _clang_getCompletionPriority =
-      _clang_getCompletionPriority_ptr
-          .asFunction<_dart_clang_getCompletionPriority>();
+  late final _clang_getCompletionPriority = _clang_getCompletionPriority_ptr
+      .asFunction<int Function(CXCompletionString)>();
 
   /// Determine the availability of the entity that this code-completion string
   /// refers to.
   int clang_getCompletionAvailability(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionAvailability(
       completion_string,
@@ -4743,16 +4853,16 @@
   }
 
   late final _clang_getCompletionAvailability_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionAvailability>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXCompletionString)>>(
           'clang_getCompletionAvailability');
-  late final _dart_clang_getCompletionAvailability
-      _clang_getCompletionAvailability = _clang_getCompletionAvailability_ptr
-          .asFunction<_dart_clang_getCompletionAvailability>();
+  late final _clang_getCompletionAvailability =
+      _clang_getCompletionAvailability_ptr
+          .asFunction<int Function(CXCompletionString)>();
 
   /// Retrieve the number of annotations associated with the given completion
   /// string.
   int clang_getCompletionNumAnnotations(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionNumAnnotations(
       completion_string,
@@ -4760,16 +4870,15 @@
   }
 
   late final _clang_getCompletionNumAnnotations_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionNumAnnotations>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXCompletionString)>>(
           'clang_getCompletionNumAnnotations');
-  late final _dart_clang_getCompletionNumAnnotations
-      _clang_getCompletionNumAnnotations =
+  late final _clang_getCompletionNumAnnotations =
       _clang_getCompletionNumAnnotations_ptr
-          .asFunction<_dart_clang_getCompletionNumAnnotations>();
+          .asFunction<int Function(CXCompletionString)>();
 
   /// Retrieve the annotation associated with the given completion string.
   CXString clang_getCompletionAnnotation(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     int annotation_number,
   ) {
     return _clang_getCompletionAnnotation(
@@ -4778,16 +4887,16 @@
     );
   }
 
-  late final _clang_getCompletionAnnotation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionAnnotation>>(
-          'clang_getCompletionAnnotation');
-  late final _dart_clang_getCompletionAnnotation
-      _clang_getCompletionAnnotation = _clang_getCompletionAnnotation_ptr
-          .asFunction<_dart_clang_getCompletionAnnotation>();
+  late final _clang_getCompletionAnnotation_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(CXCompletionString,
+              ffi.Uint32)>>('clang_getCompletionAnnotation');
+  late final _clang_getCompletionAnnotation = _clang_getCompletionAnnotation_ptr
+      .asFunction<CXString Function(CXCompletionString, int)>();
 
   /// Retrieve the parent context of the given completion string.
   CXString clang_getCompletionParent(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
     ffi.Pointer<ffi.Int32> kind,
   ) {
     return _clang_getCompletionParent(
@@ -4796,17 +4905,18 @@
     );
   }
 
-  late final _clang_getCompletionParent_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionParent>>(
-          'clang_getCompletionParent');
-  late final _dart_clang_getCompletionParent _clang_getCompletionParent =
-      _clang_getCompletionParent_ptr
-          .asFunction<_dart_clang_getCompletionParent>();
+  late final _clang_getCompletionParent_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(CXCompletionString,
+              ffi.Pointer<ffi.Int32>)>>('clang_getCompletionParent');
+  late final _clang_getCompletionParent =
+      _clang_getCompletionParent_ptr.asFunction<
+          CXString Function(CXCompletionString, ffi.Pointer<ffi.Int32>)>();
 
   /// Retrieve the brief documentation comment attached to the declaration that
   /// corresponds to the given completion string.
   CXString clang_getCompletionBriefComment(
-    ffi.Pointer<ffi.Void> completion_string,
+    CXCompletionString completion_string,
   ) {
     return _clang_getCompletionBriefComment(
       completion_string,
@@ -4814,15 +4924,15 @@
   }
 
   late final _clang_getCompletionBriefComment_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionBriefComment>>(
+      _lookup<ffi.NativeFunction<CXString Function(CXCompletionString)>>(
           'clang_getCompletionBriefComment');
-  late final _dart_clang_getCompletionBriefComment
-      _clang_getCompletionBriefComment = _clang_getCompletionBriefComment_ptr
-          .asFunction<_dart_clang_getCompletionBriefComment>();
+  late final _clang_getCompletionBriefComment =
+      _clang_getCompletionBriefComment_ptr
+          .asFunction<CXString Function(CXCompletionString)>();
 
   /// Retrieve a completion string for an arbitrary declaration or macro
   /// definition cursor.
-  ffi.Pointer<ffi.Void> clang_getCursorCompletionString(
+  CXCompletionString clang_getCursorCompletionString(
     CXCursor cursor,
   ) {
     return _clang_getCursorCompletionString(
@@ -4831,11 +4941,11 @@
   }
 
   late final _clang_getCursorCompletionString_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCursorCompletionString>>(
+      _lookup<ffi.NativeFunction<CXCompletionString Function(CXCursor)>>(
           'clang_getCursorCompletionString');
-  late final _dart_clang_getCursorCompletionString
-      _clang_getCursorCompletionString = _clang_getCursorCompletionString_ptr
-          .asFunction<_dart_clang_getCursorCompletionString>();
+  late final _clang_getCursorCompletionString =
+      _clang_getCursorCompletionString_ptr
+          .asFunction<CXCompletionString Function(CXCursor)>();
 
   /// Retrieve the number of fix-its for the given completion index.
   int clang_getCompletionNumFixIts(
@@ -4848,12 +4958,12 @@
     );
   }
 
-  late final _clang_getCompletionNumFixIts_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionNumFixIts>>(
-          'clang_getCompletionNumFixIts');
-  late final _dart_clang_getCompletionNumFixIts _clang_getCompletionNumFixIts =
-      _clang_getCompletionNumFixIts_ptr
-          .asFunction<_dart_clang_getCompletionNumFixIts>();
+  late final _clang_getCompletionNumFixIts_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(ffi.Pointer<CXCodeCompleteResults>,
+              ffi.Uint32)>>('clang_getCompletionNumFixIts');
+  late final _clang_getCompletionNumFixIts = _clang_getCompletionNumFixIts_ptr
+      .asFunction<int Function(ffi.Pointer<CXCodeCompleteResults>, int)>();
 
   /// Fix-its that *must* be applied before inserting the text for the
   /// corresponding completion.
@@ -4871,12 +4981,17 @@
     );
   }
 
-  late final _clang_getCompletionFixIt_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getCompletionFixIt>>(
-          'clang_getCompletionFixIt');
-  late final _dart_clang_getCompletionFixIt _clang_getCompletionFixIt =
-      _clang_getCompletionFixIt_ptr
-          .asFunction<_dart_clang_getCompletionFixIt>();
+  late final _clang_getCompletionFixIt_ptr = _lookup<
+      ffi.NativeFunction<
+          CXString Function(
+              ffi.Pointer<CXCodeCompleteResults>,
+              ffi.Uint32,
+              ffi.Uint32,
+              ffi.Pointer<CXSourceRange>)>>('clang_getCompletionFixIt');
+  late final _clang_getCompletionFixIt =
+      _clang_getCompletionFixIt_ptr.asFunction<
+          CXString Function(ffi.Pointer<CXCodeCompleteResults>, int, int,
+              ffi.Pointer<CXSourceRange>)>();
 
   /// Returns a default set of code-completion options that can be passed to
   /// clang_codeCompleteAt().
@@ -4885,15 +5000,14 @@
   }
 
   late final _clang_defaultCodeCompleteOptions_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_defaultCodeCompleteOptions>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function()>>(
           'clang_defaultCodeCompleteOptions');
-  late final _dart_clang_defaultCodeCompleteOptions
-      _clang_defaultCodeCompleteOptions = _clang_defaultCodeCompleteOptions_ptr
-          .asFunction<_dart_clang_defaultCodeCompleteOptions>();
+  late final _clang_defaultCodeCompleteOptions =
+      _clang_defaultCodeCompleteOptions_ptr.asFunction<int Function()>();
 
   /// Perform code completion at a given location in a translation unit.
   ffi.Pointer<CXCodeCompleteResults> clang_codeCompleteAt(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
+    CXTranslationUnit TU,
     ffi.Pointer<ffi.Int8> complete_filename,
     int complete_line,
     int complete_column,
@@ -4912,11 +5026,25 @@
     );
   }
 
-  late final _clang_codeCompleteAt_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_codeCompleteAt>>(
-          'clang_codeCompleteAt');
-  late final _dart_clang_codeCompleteAt _clang_codeCompleteAt =
-      _clang_codeCompleteAt_ptr.asFunction<_dart_clang_codeCompleteAt>();
+  late final _clang_codeCompleteAt_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<CXCodeCompleteResults> Function(
+              CXTranslationUnit,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Uint32,
+              ffi.Uint32,
+              ffi.Pointer<CXUnsavedFile>,
+              ffi.Uint32,
+              ffi.Uint32)>>('clang_codeCompleteAt');
+  late final _clang_codeCompleteAt = _clang_codeCompleteAt_ptr.asFunction<
+      ffi.Pointer<CXCodeCompleteResults> Function(
+          CXTranslationUnit,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          int,
+          ffi.Pointer<CXUnsavedFile>,
+          int,
+          int)>();
 
   /// Sort the code-completion results in case-insensitive alphabetical order.
   void clang_sortCodeCompletionResults(
@@ -4929,12 +5057,13 @@
     );
   }
 
-  late final _clang_sortCodeCompletionResults_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_sortCodeCompletionResults>>(
-          'clang_sortCodeCompletionResults');
-  late final _dart_clang_sortCodeCompletionResults
-      _clang_sortCodeCompletionResults = _clang_sortCodeCompletionResults_ptr
-          .asFunction<_dart_clang_sortCodeCompletionResults>();
+  late final _clang_sortCodeCompletionResults_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<CXCompletionResult>,
+              ffi.Uint32)>>('clang_sortCodeCompletionResults');
+  late final _clang_sortCodeCompletionResults =
+      _clang_sortCodeCompletionResults_ptr
+          .asFunction<void Function(ffi.Pointer<CXCompletionResult>, int)>();
 
   /// Free the given set of code-completion results.
   void clang_disposeCodeCompleteResults(
@@ -4945,12 +5074,13 @@
     );
   }
 
-  late final _clang_disposeCodeCompleteResults_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_disposeCodeCompleteResults>>(
-          'clang_disposeCodeCompleteResults');
-  late final _dart_clang_disposeCodeCompleteResults
-      _clang_disposeCodeCompleteResults = _clang_disposeCodeCompleteResults_ptr
-          .asFunction<_dart_clang_disposeCodeCompleteResults>();
+  late final _clang_disposeCodeCompleteResults_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<CXCodeCompleteResults>)>>(
+      'clang_disposeCodeCompleteResults');
+  late final _clang_disposeCodeCompleteResults =
+      _clang_disposeCodeCompleteResults_ptr
+          .asFunction<void Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Determine the number of diagnostics produced prior to the location where
   /// code completion was performed.
@@ -4962,16 +5092,16 @@
     );
   }
 
-  late final _clang_codeCompleteGetNumDiagnostics_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_codeCompleteGetNumDiagnostics>>(
-          'clang_codeCompleteGetNumDiagnostics');
-  late final _dart_clang_codeCompleteGetNumDiagnostics
-      _clang_codeCompleteGetNumDiagnostics =
+  late final _clang_codeCompleteGetNumDiagnostics_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Uint32 Function(ffi.Pointer<CXCodeCompleteResults>)>>(
+      'clang_codeCompleteGetNumDiagnostics');
+  late final _clang_codeCompleteGetNumDiagnostics =
       _clang_codeCompleteGetNumDiagnostics_ptr
-          .asFunction<_dart_clang_codeCompleteGetNumDiagnostics>();
+          .asFunction<int Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Retrieve a diagnostic associated with the given code completion.
-  ffi.Pointer<ffi.Void> clang_codeCompleteGetDiagnostic(
+  CXDiagnostic clang_codeCompleteGetDiagnostic(
     ffi.Pointer<CXCodeCompleteResults> Results,
     int Index,
   ) {
@@ -4981,12 +5111,13 @@
     );
   }
 
-  late final _clang_codeCompleteGetDiagnostic_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_codeCompleteGetDiagnostic>>(
-          'clang_codeCompleteGetDiagnostic');
-  late final _dart_clang_codeCompleteGetDiagnostic
-      _clang_codeCompleteGetDiagnostic = _clang_codeCompleteGetDiagnostic_ptr
-          .asFunction<_dart_clang_codeCompleteGetDiagnostic>();
+  late final _clang_codeCompleteGetDiagnostic_ptr = _lookup<
+      ffi.NativeFunction<
+          CXDiagnostic Function(ffi.Pointer<CXCodeCompleteResults>,
+              ffi.Uint32)>>('clang_codeCompleteGetDiagnostic');
+  late final _clang_codeCompleteGetDiagnostic =
+      _clang_codeCompleteGetDiagnostic_ptr.asFunction<
+          CXDiagnostic Function(ffi.Pointer<CXCodeCompleteResults>, int)>();
 
   /// Determines what completions are appropriate for the context the given code
   /// completion.
@@ -4998,12 +5129,12 @@
     );
   }
 
-  late final _clang_codeCompleteGetContexts_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_codeCompleteGetContexts>>(
-          'clang_codeCompleteGetContexts');
-  late final _dart_clang_codeCompleteGetContexts
-      _clang_codeCompleteGetContexts = _clang_codeCompleteGetContexts_ptr
-          .asFunction<_dart_clang_codeCompleteGetContexts>();
+  late final _clang_codeCompleteGetContexts_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Uint64 Function(ffi.Pointer<CXCodeCompleteResults>)>>(
+      'clang_codeCompleteGetContexts');
+  late final _clang_codeCompleteGetContexts = _clang_codeCompleteGetContexts_ptr
+      .asFunction<int Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Returns the cursor kind for the container for the current code completion
   /// context. The container is only guaranteed to be set for contexts where a
@@ -5019,13 +5150,14 @@
     );
   }
 
-  late final _clang_codeCompleteGetContainerKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_codeCompleteGetContainerKind>>(
-          'clang_codeCompleteGetContainerKind');
-  late final _dart_clang_codeCompleteGetContainerKind
-      _clang_codeCompleteGetContainerKind =
-      _clang_codeCompleteGetContainerKind_ptr
-          .asFunction<_dart_clang_codeCompleteGetContainerKind>();
+  late final _clang_codeCompleteGetContainerKind_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<CXCodeCompleteResults>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_codeCompleteGetContainerKind');
+  late final _clang_codeCompleteGetContainerKind =
+      _clang_codeCompleteGetContainerKind_ptr.asFunction<
+          int Function(
+              ffi.Pointer<CXCodeCompleteResults>, ffi.Pointer<ffi.Uint32>)>();
 
   /// Returns the USR for the container for the current code completion context.
   /// If there is not a container for the current context, this function will
@@ -5038,13 +5170,13 @@
     );
   }
 
-  late final _clang_codeCompleteGetContainerUSR_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_codeCompleteGetContainerUSR>>(
-          'clang_codeCompleteGetContainerUSR');
-  late final _dart_clang_codeCompleteGetContainerUSR
-      _clang_codeCompleteGetContainerUSR =
+  late final _clang_codeCompleteGetContainerUSR_ptr = _lookup<
+          ffi.NativeFunction<
+              CXString Function(ffi.Pointer<CXCodeCompleteResults>)>>(
+      'clang_codeCompleteGetContainerUSR');
+  late final _clang_codeCompleteGetContainerUSR =
       _clang_codeCompleteGetContainerUSR_ptr
-          .asFunction<_dart_clang_codeCompleteGetContainerUSR>();
+          .asFunction<CXString Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Returns the currently-entered selector for an Objective-C message send,
   /// formatted like "initWithFoo:bar:". Only guaranteed to return a non-empty
@@ -5058,13 +5190,13 @@
     );
   }
 
-  late final _clang_codeCompleteGetObjCSelector_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_codeCompleteGetObjCSelector>>(
-          'clang_codeCompleteGetObjCSelector');
-  late final _dart_clang_codeCompleteGetObjCSelector
-      _clang_codeCompleteGetObjCSelector =
+  late final _clang_codeCompleteGetObjCSelector_ptr = _lookup<
+          ffi.NativeFunction<
+              CXString Function(ffi.Pointer<CXCodeCompleteResults>)>>(
+      'clang_codeCompleteGetObjCSelector');
+  late final _clang_codeCompleteGetObjCSelector =
       _clang_codeCompleteGetObjCSelector_ptr
-          .asFunction<_dart_clang_codeCompleteGetObjCSelector>();
+          .asFunction<CXString Function(ffi.Pointer<CXCodeCompleteResults>)>();
 
   /// Return a version string, suitable for showing to a user, but not intended
   /// to be parsed (the format is not guaranteed to be stable).
@@ -5073,10 +5205,9 @@
   }
 
   late final _clang_getClangVersion_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getClangVersion>>(
-          'clang_getClangVersion');
-  late final _dart_clang_getClangVersion _clang_getClangVersion =
-      _clang_getClangVersion_ptr.asFunction<_dart_clang_getClangVersion>();
+      _lookup<ffi.NativeFunction<CXString Function()>>('clang_getClangVersion');
+  late final _clang_getClangVersion =
+      _clang_getClangVersion_ptr.asFunction<CXString Function()>();
 
   /// Enable/disable crash recovery.
   void clang_toggleCrashRecovery(
@@ -5088,20 +5219,19 @@
   }
 
   late final _clang_toggleCrashRecovery_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_toggleCrashRecovery>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Uint32)>>(
           'clang_toggleCrashRecovery');
-  late final _dart_clang_toggleCrashRecovery _clang_toggleCrashRecovery =
-      _clang_toggleCrashRecovery_ptr
-          .asFunction<_dart_clang_toggleCrashRecovery>();
+  late final _clang_toggleCrashRecovery =
+      _clang_toggleCrashRecovery_ptr.asFunction<void Function(int)>();
 
   /// Visit the set of preprocessor inclusions in a translation unit. The
   /// visitor function is called with the provided data for every included file.
   /// This does not include headers included by the PCH file (unless one is
   /// inspecting the inclusions in the PCH file itself).
   void clang_getInclusions(
-    ffi.Pointer<CXTranslationUnitImpl> tu,
-    ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor>> visitor,
-    ffi.Pointer<ffi.Void> client_data,
+    CXTranslationUnit tu,
+    CXInclusionVisitor visitor,
+    CXClientData client_data,
   ) {
     return _clang_getInclusions(
       tu,
@@ -5110,16 +5240,17 @@
     );
   }
 
-  late final _clang_getInclusions_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getInclusions>>(
-          'clang_getInclusions');
-  late final _dart_clang_getInclusions _clang_getInclusions =
-      _clang_getInclusions_ptr.asFunction<_dart_clang_getInclusions>();
+  late final _clang_getInclusions_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(CXTranslationUnit, CXInclusionVisitor,
+              CXClientData)>>('clang_getInclusions');
+  late final _clang_getInclusions = _clang_getInclusions_ptr.asFunction<
+      void Function(CXTranslationUnit, CXInclusionVisitor, CXClientData)>();
 
   /// If cursor is a statement declaration tries to evaluate the statement and
   /// if its variable, tries to evaluate its initializer, into its corresponding
   /// type.
-  ffi.Pointer<ffi.Void> clang_Cursor_Evaluate(
+  CXEvalResult clang_Cursor_Evaluate(
     CXCursor C,
   ) {
     return _clang_Cursor_Evaluate(
@@ -5128,14 +5259,14 @@
   }
 
   late final _clang_Cursor_Evaluate_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Cursor_Evaluate>>(
+      _lookup<ffi.NativeFunction<CXEvalResult Function(CXCursor)>>(
           'clang_Cursor_Evaluate');
-  late final _dart_clang_Cursor_Evaluate _clang_Cursor_Evaluate =
-      _clang_Cursor_Evaluate_ptr.asFunction<_dart_clang_Cursor_Evaluate>();
+  late final _clang_Cursor_Evaluate =
+      _clang_Cursor_Evaluate_ptr.asFunction<CXEvalResult Function(CXCursor)>();
 
   /// Returns the kind of the evaluated result.
   int clang_EvalResult_getKind(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getKind(
       E,
@@ -5143,15 +5274,14 @@
   }
 
   late final _clang_EvalResult_getKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXEvalResult)>>(
           'clang_EvalResult_getKind');
-  late final _dart_clang_EvalResult_getKind _clang_EvalResult_getKind =
-      _clang_EvalResult_getKind_ptr
-          .asFunction<_dart_clang_EvalResult_getKind>();
+  late final _clang_EvalResult_getKind =
+      _clang_EvalResult_getKind_ptr.asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as integer if the kind is Int.
   int clang_EvalResult_getAsInt(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsInt(
       E,
@@ -5159,17 +5289,16 @@
   }
 
   late final _clang_EvalResult_getAsInt_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsInt>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(CXEvalResult)>>(
           'clang_EvalResult_getAsInt');
-  late final _dart_clang_EvalResult_getAsInt _clang_EvalResult_getAsInt =
-      _clang_EvalResult_getAsInt_ptr
-          .asFunction<_dart_clang_EvalResult_getAsInt>();
+  late final _clang_EvalResult_getAsInt =
+      _clang_EvalResult_getAsInt_ptr.asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as a long long integer if the kind is Int.
   /// This prevents overflows that may happen if the result is returned with
   /// clang_EvalResult_getAsInt.
   int clang_EvalResult_getAsLongLong(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsLongLong(
       E,
@@ -5177,16 +5306,16 @@
   }
 
   late final _clang_EvalResult_getAsLongLong_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsLongLong>>(
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(CXEvalResult)>>(
           'clang_EvalResult_getAsLongLong');
-  late final _dart_clang_EvalResult_getAsLongLong
-      _clang_EvalResult_getAsLongLong = _clang_EvalResult_getAsLongLong_ptr
-          .asFunction<_dart_clang_EvalResult_getAsLongLong>();
+  late final _clang_EvalResult_getAsLongLong =
+      _clang_EvalResult_getAsLongLong_ptr
+          .asFunction<int Function(CXEvalResult)>();
 
   /// Returns a non-zero value if the kind is Int and the evaluation result
   /// resulted in an unsigned integer.
   int clang_EvalResult_isUnsignedInt(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_isUnsignedInt(
       E,
@@ -5194,16 +5323,16 @@
   }
 
   late final _clang_EvalResult_isUnsignedInt_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_isUnsignedInt>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXEvalResult)>>(
           'clang_EvalResult_isUnsignedInt');
-  late final _dart_clang_EvalResult_isUnsignedInt
-      _clang_EvalResult_isUnsignedInt = _clang_EvalResult_isUnsignedInt_ptr
-          .asFunction<_dart_clang_EvalResult_isUnsignedInt>();
+  late final _clang_EvalResult_isUnsignedInt =
+      _clang_EvalResult_isUnsignedInt_ptr
+          .asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as an unsigned integer if the kind is Int
   /// and clang_EvalResult_isUnsignedInt is non-zero.
   int clang_EvalResult_getAsUnsigned(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsUnsigned(
       E,
@@ -5211,15 +5340,15 @@
   }
 
   late final _clang_EvalResult_getAsUnsigned_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsUnsigned>>(
+      _lookup<ffi.NativeFunction<ffi.Uint64 Function(CXEvalResult)>>(
           'clang_EvalResult_getAsUnsigned');
-  late final _dart_clang_EvalResult_getAsUnsigned
-      _clang_EvalResult_getAsUnsigned = _clang_EvalResult_getAsUnsigned_ptr
-          .asFunction<_dart_clang_EvalResult_getAsUnsigned>();
+  late final _clang_EvalResult_getAsUnsigned =
+      _clang_EvalResult_getAsUnsigned_ptr
+          .asFunction<int Function(CXEvalResult)>();
 
   /// Returns the evaluation result as double if the kind is double.
   double clang_EvalResult_getAsDouble(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsDouble(
       E,
@@ -5227,18 +5356,17 @@
   }
 
   late final _clang_EvalResult_getAsDouble_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsDouble>>(
+      _lookup<ffi.NativeFunction<ffi.Double Function(CXEvalResult)>>(
           'clang_EvalResult_getAsDouble');
-  late final _dart_clang_EvalResult_getAsDouble _clang_EvalResult_getAsDouble =
-      _clang_EvalResult_getAsDouble_ptr
-          .asFunction<_dart_clang_EvalResult_getAsDouble>();
+  late final _clang_EvalResult_getAsDouble = _clang_EvalResult_getAsDouble_ptr
+      .asFunction<double Function(CXEvalResult)>();
 
   /// Returns the evaluation result as a constant string if the kind is other
   /// than Int or float. User must not free this pointer, instead call
   /// clang_EvalResult_dispose on the CXEvalResult returned by
   /// clang_Cursor_Evaluate.
   ffi.Pointer<ffi.Int8> clang_EvalResult_getAsStr(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_getAsStr(
       E,
@@ -5246,15 +5374,14 @@
   }
 
   late final _clang_EvalResult_getAsStr_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_getAsStr>>(
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(CXEvalResult)>>(
           'clang_EvalResult_getAsStr');
-  late final _dart_clang_EvalResult_getAsStr _clang_EvalResult_getAsStr =
-      _clang_EvalResult_getAsStr_ptr
-          .asFunction<_dart_clang_EvalResult_getAsStr>();
+  late final _clang_EvalResult_getAsStr = _clang_EvalResult_getAsStr_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(CXEvalResult)>();
 
   /// Disposes the created Eval memory.
   void clang_EvalResult_dispose(
-    ffi.Pointer<ffi.Void> E,
+    CXEvalResult E,
   ) {
     return _clang_EvalResult_dispose(
       E,
@@ -5262,14 +5389,13 @@
   }
 
   late final _clang_EvalResult_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_EvalResult_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXEvalResult)>>(
           'clang_EvalResult_dispose');
-  late final _dart_clang_EvalResult_dispose _clang_EvalResult_dispose =
-      _clang_EvalResult_dispose_ptr
-          .asFunction<_dart_clang_EvalResult_dispose>();
+  late final _clang_EvalResult_dispose =
+      _clang_EvalResult_dispose_ptr.asFunction<void Function(CXEvalResult)>();
 
   /// Retrieve a remapping.
-  ffi.Pointer<ffi.Void> clang_getRemappings(
+  CXRemapping clang_getRemappings(
     ffi.Pointer<ffi.Int8> path,
   ) {
     return _clang_getRemappings(
@@ -5278,13 +5404,13 @@
   }
 
   late final _clang_getRemappings_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getRemappings>>(
+      _lookup<ffi.NativeFunction<CXRemapping Function(ffi.Pointer<ffi.Int8>)>>(
           'clang_getRemappings');
-  late final _dart_clang_getRemappings _clang_getRemappings =
-      _clang_getRemappings_ptr.asFunction<_dart_clang_getRemappings>();
+  late final _clang_getRemappings = _clang_getRemappings_ptr
+      .asFunction<CXRemapping Function(ffi.Pointer<ffi.Int8>)>();
 
   /// Retrieve a remapping.
-  ffi.Pointer<ffi.Void> clang_getRemappingsFromFileList(
+  CXRemapping clang_getRemappingsFromFileList(
     ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
     int numFiles,
   ) {
@@ -5294,16 +5420,17 @@
     );
   }
 
-  late final _clang_getRemappingsFromFileList_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_getRemappingsFromFileList>>(
-          'clang_getRemappingsFromFileList');
-  late final _dart_clang_getRemappingsFromFileList
-      _clang_getRemappingsFromFileList = _clang_getRemappingsFromFileList_ptr
-          .asFunction<_dart_clang_getRemappingsFromFileList>();
+  late final _clang_getRemappingsFromFileList_ptr = _lookup<
+      ffi.NativeFunction<
+          CXRemapping Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Uint32)>>('clang_getRemappingsFromFileList');
+  late final _clang_getRemappingsFromFileList =
+      _clang_getRemappingsFromFileList_ptr.asFunction<
+          CXRemapping Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>, int)>();
 
   /// Determine the number of remappings.
   int clang_remap_getNumFiles(
-    ffi.Pointer<ffi.Void> arg0,
+    CXRemapping arg0,
   ) {
     return _clang_remap_getNumFiles(
       arg0,
@@ -5311,14 +5438,14 @@
   }
 
   late final _clang_remap_getNumFiles_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_remap_getNumFiles>>(
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(CXRemapping)>>(
           'clang_remap_getNumFiles');
-  late final _dart_clang_remap_getNumFiles _clang_remap_getNumFiles =
-      _clang_remap_getNumFiles_ptr.asFunction<_dart_clang_remap_getNumFiles>();
+  late final _clang_remap_getNumFiles =
+      _clang_remap_getNumFiles_ptr.asFunction<int Function(CXRemapping)>();
 
   /// Get the original and the associated filename from the remapping.
   void clang_remap_getFilenames(
-    ffi.Pointer<ffi.Void> arg0,
+    CXRemapping arg0,
     int index,
     ffi.Pointer<CXString> original,
     ffi.Pointer<CXString> transformed,
@@ -5331,16 +5458,18 @@
     );
   }
 
-  late final _clang_remap_getFilenames_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_remap_getFilenames>>(
-          'clang_remap_getFilenames');
-  late final _dart_clang_remap_getFilenames _clang_remap_getFilenames =
-      _clang_remap_getFilenames_ptr
-          .asFunction<_dart_clang_remap_getFilenames>();
+  late final _clang_remap_getFilenames_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(CXRemapping, ffi.Uint32, ffi.Pointer<CXString>,
+              ffi.Pointer<CXString>)>>('clang_remap_getFilenames');
+  late final _clang_remap_getFilenames =
+      _clang_remap_getFilenames_ptr.asFunction<
+          void Function(CXRemapping, int, ffi.Pointer<CXString>,
+              ffi.Pointer<CXString>)>();
 
   /// Dispose the remapping.
   void clang_remap_dispose(
-    ffi.Pointer<ffi.Void> arg0,
+    CXRemapping arg0,
   ) {
     return _clang_remap_dispose(
       arg0,
@@ -5348,15 +5477,15 @@
   }
 
   late final _clang_remap_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_remap_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXRemapping)>>(
           'clang_remap_dispose');
-  late final _dart_clang_remap_dispose _clang_remap_dispose =
-      _clang_remap_dispose_ptr.asFunction<_dart_clang_remap_dispose>();
+  late final _clang_remap_dispose =
+      _clang_remap_dispose_ptr.asFunction<void Function(CXRemapping)>();
 
   /// Find references of a declaration in a specific file.
   int clang_findReferencesInFile(
     CXCursor cursor,
-    ffi.Pointer<ffi.Void> file,
+    CXFile file,
     CXCursorAndRangeVisitor visitor,
   ) {
     return _clang_findReferencesInFile(
@@ -5366,17 +5495,17 @@
     );
   }
 
-  late final _clang_findReferencesInFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_findReferencesInFile>>(
-          'clang_findReferencesInFile');
-  late final _dart_clang_findReferencesInFile _clang_findReferencesInFile =
-      _clang_findReferencesInFile_ptr
-          .asFunction<_dart_clang_findReferencesInFile>();
+  late final _clang_findReferencesInFile_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(CXCursor, CXFile,
+              CXCursorAndRangeVisitor)>>('clang_findReferencesInFile');
+  late final _clang_findReferencesInFile = _clang_findReferencesInFile_ptr
+      .asFunction<int Function(CXCursor, CXFile, CXCursorAndRangeVisitor)>();
 
   /// Find #import/#include directives in a specific file.
   int clang_findIncludesInFile(
-    ffi.Pointer<CXTranslationUnitImpl> TU,
-    ffi.Pointer<ffi.Void> file,
+    CXTranslationUnit TU,
+    CXFile file,
     CXCursorAndRangeVisitor visitor,
   ) {
     return _clang_findIncludesInFile(
@@ -5386,12 +5515,13 @@
     );
   }
 
-  late final _clang_findIncludesInFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_findIncludesInFile>>(
-          'clang_findIncludesInFile');
-  late final _dart_clang_findIncludesInFile _clang_findIncludesInFile =
-      _clang_findIncludesInFile_ptr
-          .asFunction<_dart_clang_findIncludesInFile>();
+  late final _clang_findIncludesInFile_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(CXTranslationUnit, CXFile,
+              CXCursorAndRangeVisitor)>>('clang_findIncludesInFile');
+  late final _clang_findIncludesInFile =
+      _clang_findIncludesInFile_ptr.asFunction<
+          int Function(CXTranslationUnit, CXFile, CXCursorAndRangeVisitor)>();
 
   int clang_index_isEntityObjCContainerKind(
     int arg0,
@@ -5402,12 +5532,11 @@
   }
 
   late final _clang_index_isEntityObjCContainerKind_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_isEntityObjCContainerKind>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>(
           'clang_index_isEntityObjCContainerKind');
-  late final _dart_clang_index_isEntityObjCContainerKind
-      _clang_index_isEntityObjCContainerKind =
+  late final _clang_index_isEntityObjCContainerKind =
       _clang_index_isEntityObjCContainerKind_ptr
-          .asFunction<_dart_clang_index_isEntityObjCContainerKind>();
+          .asFunction<int Function(int)>();
 
   ffi.Pointer<CXIdxObjCContainerDeclInfo> clang_index_getObjCContainerDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -5417,13 +5546,15 @@
     );
   }
 
-  late final _clang_index_getObjCContainerDeclInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getObjCContainerDeclInfo>>(
-          'clang_index_getObjCContainerDeclInfo');
-  late final _dart_clang_index_getObjCContainerDeclInfo
-      _clang_index_getObjCContainerDeclInfo =
-      _clang_index_getObjCContainerDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCContainerDeclInfo>();
+  late final _clang_index_getObjCContainerDeclInfo_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
+                  ffi.Pointer<CXIdxDeclInfo>)>>(
+      'clang_index_getObjCContainerDeclInfo');
+  late final _clang_index_getObjCContainerDeclInfo =
+      _clang_index_getObjCContainerDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCInterfaceDeclInfo> clang_index_getObjCInterfaceDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -5433,13 +5564,15 @@
     );
   }
 
-  late final _clang_index_getObjCInterfaceDeclInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getObjCInterfaceDeclInfo>>(
-          'clang_index_getObjCInterfaceDeclInfo');
-  late final _dart_clang_index_getObjCInterfaceDeclInfo
-      _clang_index_getObjCInterfaceDeclInfo =
-      _clang_index_getObjCInterfaceDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCInterfaceDeclInfo>();
+  late final _clang_index_getObjCInterfaceDeclInfo_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
+                  ffi.Pointer<CXIdxDeclInfo>)>>(
+      'clang_index_getObjCInterfaceDeclInfo');
+  late final _clang_index_getObjCInterfaceDeclInfo =
+      _clang_index_getObjCInterfaceDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCCategoryDeclInfo> clang_index_getObjCCategoryDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -5449,13 +5582,15 @@
     );
   }
 
-  late final _clang_index_getObjCCategoryDeclInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getObjCCategoryDeclInfo>>(
-          'clang_index_getObjCCategoryDeclInfo');
-  late final _dart_clang_index_getObjCCategoryDeclInfo
-      _clang_index_getObjCCategoryDeclInfo =
-      _clang_index_getObjCCategoryDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCCategoryDeclInfo>();
+  late final _clang_index_getObjCCategoryDeclInfo_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
+                  ffi.Pointer<CXIdxDeclInfo>)>>(
+      'clang_index_getObjCCategoryDeclInfo');
+  late final _clang_index_getObjCCategoryDeclInfo =
+      _clang_index_getObjCCategoryDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCProtocolRefListInfo>
       clang_index_getObjCProtocolRefListInfo(
@@ -5466,13 +5601,15 @@
     );
   }
 
-  late final _clang_index_getObjCProtocolRefListInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getObjCProtocolRefListInfo>>(
-          'clang_index_getObjCProtocolRefListInfo');
-  late final _dart_clang_index_getObjCProtocolRefListInfo
-      _clang_index_getObjCProtocolRefListInfo =
-      _clang_index_getObjCProtocolRefListInfo_ptr
-          .asFunction<_dart_clang_index_getObjCProtocolRefListInfo>();
+  late final _clang_index_getObjCProtocolRefListInfo_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
+                  ffi.Pointer<CXIdxDeclInfo>)>>(
+      'clang_index_getObjCProtocolRefListInfo');
+  late final _clang_index_getObjCProtocolRefListInfo =
+      _clang_index_getObjCProtocolRefListInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxObjCPropertyDeclInfo> clang_index_getObjCPropertyDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -5482,13 +5619,15 @@
     );
   }
 
-  late final _clang_index_getObjCPropertyDeclInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getObjCPropertyDeclInfo>>(
-          'clang_index_getObjCPropertyDeclInfo');
-  late final _dart_clang_index_getObjCPropertyDeclInfo
-      _clang_index_getObjCPropertyDeclInfo =
-      _clang_index_getObjCPropertyDeclInfo_ptr
-          .asFunction<_dart_clang_index_getObjCPropertyDeclInfo>();
+  late final _clang_index_getObjCPropertyDeclInfo_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
+                  ffi.Pointer<CXIdxDeclInfo>)>>(
+      'clang_index_getObjCPropertyDeclInfo');
+  late final _clang_index_getObjCPropertyDeclInfo =
+      _clang_index_getObjCPropertyDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   ffi.Pointer<CXIdxIBOutletCollectionAttrInfo>
       clang_index_getIBOutletCollectionAttrInfo(
@@ -5499,13 +5638,15 @@
     );
   }
 
-  late final _clang_index_getIBOutletCollectionAttrInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getIBOutletCollectionAttrInfo>>(
-          'clang_index_getIBOutletCollectionAttrInfo');
-  late final _dart_clang_index_getIBOutletCollectionAttrInfo
-      _clang_index_getIBOutletCollectionAttrInfo =
-      _clang_index_getIBOutletCollectionAttrInfo_ptr
-          .asFunction<_dart_clang_index_getIBOutletCollectionAttrInfo>();
+  late final _clang_index_getIBOutletCollectionAttrInfo_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
+                  ffi.Pointer<CXIdxAttrInfo>)>>(
+      'clang_index_getIBOutletCollectionAttrInfo');
+  late final _clang_index_getIBOutletCollectionAttrInfo =
+      _clang_index_getIBOutletCollectionAttrInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
+              ffi.Pointer<CXIdxAttrInfo>)>();
 
   ffi.Pointer<CXIdxCXXClassDeclInfo> clang_index_getCXXClassDeclInfo(
     ffi.Pointer<CXIdxDeclInfo> arg0,
@@ -5515,15 +5656,17 @@
     );
   }
 
-  late final _clang_index_getCXXClassDeclInfo_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getCXXClassDeclInfo>>(
-          'clang_index_getCXXClassDeclInfo');
-  late final _dart_clang_index_getCXXClassDeclInfo
-      _clang_index_getCXXClassDeclInfo = _clang_index_getCXXClassDeclInfo_ptr
-          .asFunction<_dart_clang_index_getCXXClassDeclInfo>();
+  late final _clang_index_getCXXClassDeclInfo_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>>('clang_index_getCXXClassDeclInfo');
+  late final _clang_index_getCXXClassDeclInfo =
+      _clang_index_getCXXClassDeclInfo_ptr.asFunction<
+          ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
+              ffi.Pointer<CXIdxDeclInfo>)>();
 
   /// For retrieving a custom CXIdxClientContainer attached to a container.
-  ffi.Pointer<ffi.Void> clang_index_getClientContainer(
+  CXIdxClientContainer clang_index_getClientContainer(
     ffi.Pointer<CXIdxContainerInfo> arg0,
   ) {
     return _clang_index_getClientContainer(
@@ -5531,17 +5674,18 @@
     );
   }
 
-  late final _clang_index_getClientContainer_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getClientContainer>>(
-          'clang_index_getClientContainer');
-  late final _dart_clang_index_getClientContainer
-      _clang_index_getClientContainer = _clang_index_getClientContainer_ptr
-          .asFunction<_dart_clang_index_getClientContainer>();
+  late final _clang_index_getClientContainer_ptr = _lookup<
+          ffi.NativeFunction<
+              CXIdxClientContainer Function(ffi.Pointer<CXIdxContainerInfo>)>>(
+      'clang_index_getClientContainer');
+  late final _clang_index_getClientContainer =
+      _clang_index_getClientContainer_ptr.asFunction<
+          CXIdxClientContainer Function(ffi.Pointer<CXIdxContainerInfo>)>();
 
   /// For setting a custom CXIdxClientContainer attached to a container.
   void clang_index_setClientContainer(
     ffi.Pointer<CXIdxContainerInfo> arg0,
-    ffi.Pointer<ffi.Void> arg1,
+    CXIdxClientContainer arg1,
   ) {
     return _clang_index_setClientContainer(
       arg0,
@@ -5549,15 +5693,17 @@
     );
   }
 
-  late final _clang_index_setClientContainer_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_setClientContainer>>(
-          'clang_index_setClientContainer');
-  late final _dart_clang_index_setClientContainer
-      _clang_index_setClientContainer = _clang_index_setClientContainer_ptr
-          .asFunction<_dart_clang_index_setClientContainer>();
+  late final _clang_index_setClientContainer_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<CXIdxContainerInfo>,
+              CXIdxClientContainer)>>('clang_index_setClientContainer');
+  late final _clang_index_setClientContainer =
+      _clang_index_setClientContainer_ptr.asFunction<
+          void Function(
+              ffi.Pointer<CXIdxContainerInfo>, CXIdxClientContainer)>();
 
   /// For retrieving a custom CXIdxClientEntity attached to an entity.
-  ffi.Pointer<ffi.Void> clang_index_getClientEntity(
+  CXIdxClientEntity clang_index_getClientEntity(
     ffi.Pointer<CXIdxEntityInfo> arg0,
   ) {
     return _clang_index_getClientEntity(
@@ -5565,17 +5711,17 @@
     );
   }
 
-  late final _clang_index_getClientEntity_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_getClientEntity>>(
-          'clang_index_getClientEntity');
-  late final _dart_clang_index_getClientEntity _clang_index_getClientEntity =
-      _clang_index_getClientEntity_ptr
-          .asFunction<_dart_clang_index_getClientEntity>();
+  late final _clang_index_getClientEntity_ptr = _lookup<
+      ffi.NativeFunction<
+          CXIdxClientEntity Function(
+              ffi.Pointer<CXIdxEntityInfo>)>>('clang_index_getClientEntity');
+  late final _clang_index_getClientEntity = _clang_index_getClientEntity_ptr
+      .asFunction<CXIdxClientEntity Function(ffi.Pointer<CXIdxEntityInfo>)>();
 
   /// For setting a custom CXIdxClientEntity attached to an entity.
   void clang_index_setClientEntity(
     ffi.Pointer<CXIdxEntityInfo> arg0,
-    ffi.Pointer<ffi.Void> arg1,
+    CXIdxClientEntity arg1,
   ) {
     return _clang_index_setClientEntity(
       arg0,
@@ -5583,17 +5729,18 @@
     );
   }
 
-  late final _clang_index_setClientEntity_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_index_setClientEntity>>(
-          'clang_index_setClientEntity');
-  late final _dart_clang_index_setClientEntity _clang_index_setClientEntity =
-      _clang_index_setClientEntity_ptr
-          .asFunction<_dart_clang_index_setClientEntity>();
+  late final _clang_index_setClientEntity_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<CXIdxEntityInfo>,
+              CXIdxClientEntity)>>('clang_index_setClientEntity');
+  late final _clang_index_setClientEntity =
+      _clang_index_setClientEntity_ptr.asFunction<
+          void Function(ffi.Pointer<CXIdxEntityInfo>, CXIdxClientEntity)>();
 
   /// An indexing action/session, to be applied to one or multiple translation
   /// units.
-  ffi.Pointer<ffi.Void> clang_IndexAction_create(
-    ffi.Pointer<ffi.Void> CIdx,
+  CXIndexAction clang_IndexAction_create(
+    CXIndex CIdx,
   ) {
     return _clang_IndexAction_create(
       CIdx,
@@ -5601,15 +5748,14 @@
   }
 
   late final _clang_IndexAction_create_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_IndexAction_create>>(
+      _lookup<ffi.NativeFunction<CXIndexAction Function(CXIndex)>>(
           'clang_IndexAction_create');
-  late final _dart_clang_IndexAction_create _clang_IndexAction_create =
-      _clang_IndexAction_create_ptr
-          .asFunction<_dart_clang_IndexAction_create>();
+  late final _clang_IndexAction_create = _clang_IndexAction_create_ptr
+      .asFunction<CXIndexAction Function(CXIndex)>();
 
   /// Destroy the given index action.
   void clang_IndexAction_dispose(
-    ffi.Pointer<ffi.Void> arg0,
+    CXIndexAction arg0,
   ) {
     return _clang_IndexAction_dispose(
       arg0,
@@ -5617,17 +5763,16 @@
   }
 
   late final _clang_IndexAction_dispose_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_IndexAction_dispose>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(CXIndexAction)>>(
           'clang_IndexAction_dispose');
-  late final _dart_clang_IndexAction_dispose _clang_IndexAction_dispose =
-      _clang_IndexAction_dispose_ptr
-          .asFunction<_dart_clang_IndexAction_dispose>();
+  late final _clang_IndexAction_dispose =
+      _clang_IndexAction_dispose_ptr.asFunction<void Function(CXIndexAction)>();
 
   /// Index the given source file and the translation unit corresponding to that
   /// file via callbacks implemented through #IndexerCallbacks.
   int clang_indexSourceFile(
-    ffi.Pointer<ffi.Void> arg0,
-    ffi.Pointer<ffi.Void> client_data,
+    CXIndexAction arg0,
+    CXClientData client_data,
     ffi.Pointer<IndexerCallbacks> index_callbacks,
     int index_callbacks_size,
     int index_options,
@@ -5636,7 +5781,7 @@
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
     int TU_options,
   ) {
     return _clang_indexSourceFile(
@@ -5655,18 +5800,42 @@
     );
   }
 
-  late final _clang_indexSourceFile_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_indexSourceFile>>(
-          'clang_indexSourceFile');
-  late final _dart_clang_indexSourceFile _clang_indexSourceFile =
-      _clang_indexSourceFile_ptr.asFunction<_dart_clang_indexSourceFile>();
+  late final _clang_indexSourceFile_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXIndexAction,
+              CXClientData,
+              ffi.Pointer<IndexerCallbacks>,
+              ffi.Uint32,
+              ffi.Uint32,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32,
+              ffi.Pointer<CXUnsavedFile>,
+              ffi.Uint32,
+              ffi.Pointer<CXTranslationUnit>,
+              ffi.Uint32)>>('clang_indexSourceFile');
+  late final _clang_indexSourceFile = _clang_indexSourceFile_ptr.asFunction<
+      int Function(
+          CXIndexAction,
+          CXClientData,
+          ffi.Pointer<IndexerCallbacks>,
+          int,
+          int,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+          int,
+          ffi.Pointer<CXUnsavedFile>,
+          int,
+          ffi.Pointer<CXTranslationUnit>,
+          int)>();
 
   /// Same as clang_indexSourceFile but requires a full command line for
   /// command_line_args including argv[0]. This is useful if the standard
   /// library paths are relative to the binary.
   int clang_indexSourceFileFullArgv(
-    ffi.Pointer<ffi.Void> arg0,
-    ffi.Pointer<ffi.Void> client_data,
+    CXIndexAction arg0,
+    CXClientData client_data,
     ffi.Pointer<IndexerCallbacks> index_callbacks,
     int index_callbacks_size,
     int index_options,
@@ -5675,7 +5844,7 @@
     int num_command_line_args,
     ffi.Pointer<CXUnsavedFile> unsaved_files,
     int num_unsaved_files,
-    ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+    ffi.Pointer<CXTranslationUnit> out_TU,
     int TU_options,
   ) {
     return _clang_indexSourceFileFullArgv(
@@ -5694,22 +5863,46 @@
     );
   }
 
-  late final _clang_indexSourceFileFullArgv_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_indexSourceFileFullArgv>>(
-          'clang_indexSourceFileFullArgv');
-  late final _dart_clang_indexSourceFileFullArgv
-      _clang_indexSourceFileFullArgv = _clang_indexSourceFileFullArgv_ptr
-          .asFunction<_dart_clang_indexSourceFileFullArgv>();
+  late final _clang_indexSourceFileFullArgv_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXIndexAction,
+              CXClientData,
+              ffi.Pointer<IndexerCallbacks>,
+              ffi.Uint32,
+              ffi.Uint32,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32,
+              ffi.Pointer<CXUnsavedFile>,
+              ffi.Uint32,
+              ffi.Pointer<CXTranslationUnit>,
+              ffi.Uint32)>>('clang_indexSourceFileFullArgv');
+  late final _clang_indexSourceFileFullArgv =
+      _clang_indexSourceFileFullArgv_ptr.asFunction<
+          int Function(
+              CXIndexAction,
+              CXClientData,
+              ffi.Pointer<IndexerCallbacks>,
+              int,
+              int,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              int,
+              ffi.Pointer<CXUnsavedFile>,
+              int,
+              ffi.Pointer<CXTranslationUnit>,
+              int)>();
 
   /// Index the given translation unit via callbacks implemented through
   /// #IndexerCallbacks.
   int clang_indexTranslationUnit(
-    ffi.Pointer<ffi.Void> arg0,
-    ffi.Pointer<ffi.Void> client_data,
+    CXIndexAction arg0,
+    CXClientData client_data,
     ffi.Pointer<IndexerCallbacks> index_callbacks,
     int index_callbacks_size,
     int index_options,
-    ffi.Pointer<CXTranslationUnitImpl> arg5,
+    CXTranslationUnit arg5,
   ) {
     return _clang_indexTranslationUnit(
       arg0,
@@ -5721,19 +5914,26 @@
     );
   }
 
-  late final _clang_indexTranslationUnit_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_indexTranslationUnit>>(
-          'clang_indexTranslationUnit');
-  late final _dart_clang_indexTranslationUnit _clang_indexTranslationUnit =
-      _clang_indexTranslationUnit_ptr
-          .asFunction<_dart_clang_indexTranslationUnit>();
+  late final _clang_indexTranslationUnit_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              CXIndexAction,
+              CXClientData,
+              ffi.Pointer<IndexerCallbacks>,
+              ffi.Uint32,
+              ffi.Uint32,
+              CXTranslationUnit)>>('clang_indexTranslationUnit');
+  late final _clang_indexTranslationUnit =
+      _clang_indexTranslationUnit_ptr.asFunction<
+          int Function(CXIndexAction, CXClientData,
+              ffi.Pointer<IndexerCallbacks>, int, int, CXTranslationUnit)>();
 
   /// Retrieve the CXIdxFile, file, line, column, and offset represented by the
   /// given CXIdxLoc.
   void clang_indexLoc_getFileLocation(
     CXIdxLoc loc,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> indexFile,
-    ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+    ffi.Pointer<CXIdxClientFile> indexFile,
+    ffi.Pointer<CXFile> file,
     ffi.Pointer<ffi.Uint32> line,
     ffi.Pointer<ffi.Uint32> column,
     ffi.Pointer<ffi.Uint32> offset,
@@ -5748,12 +5948,24 @@
     );
   }
 
-  late final _clang_indexLoc_getFileLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_indexLoc_getFileLocation>>(
-          'clang_indexLoc_getFileLocation');
-  late final _dart_clang_indexLoc_getFileLocation
-      _clang_indexLoc_getFileLocation = _clang_indexLoc_getFileLocation_ptr
-          .asFunction<_dart_clang_indexLoc_getFileLocation>();
+  late final _clang_indexLoc_getFileLocation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              CXIdxLoc,
+              ffi.Pointer<CXIdxClientFile>,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>>('clang_indexLoc_getFileLocation');
+  late final _clang_indexLoc_getFileLocation =
+      _clang_indexLoc_getFileLocation_ptr.asFunction<
+          void Function(
+              CXIdxLoc,
+              ffi.Pointer<CXIdxClientFile>,
+              ffi.Pointer<CXFile>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>,
+              ffi.Pointer<ffi.Uint32>)>();
 
   /// Retrieve the CXSourceLocation represented by the given CXIdxLoc.
   CXSourceLocation clang_indexLoc_getCXSourceLocation(
@@ -5765,18 +5977,17 @@
   }
 
   late final _clang_indexLoc_getCXSourceLocation_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_indexLoc_getCXSourceLocation>>(
+      _lookup<ffi.NativeFunction<CXSourceLocation Function(CXIdxLoc)>>(
           'clang_indexLoc_getCXSourceLocation');
-  late final _dart_clang_indexLoc_getCXSourceLocation
-      _clang_indexLoc_getCXSourceLocation =
+  late final _clang_indexLoc_getCXSourceLocation =
       _clang_indexLoc_getCXSourceLocation_ptr
-          .asFunction<_dart_clang_indexLoc_getCXSourceLocation>();
+          .asFunction<CXSourceLocation Function(CXIdxLoc)>();
 
   /// Visit the fields of a particular type.
   int clang_Type_visitFields(
     CXType T,
-    ffi.Pointer<ffi.NativeFunction<CXFieldVisitor>> visitor,
-    ffi.Pointer<ffi.Void> client_data,
+    CXFieldVisitor visitor,
+    CXClientData client_data,
   ) {
     return _clang_Type_visitFields(
       T,
@@ -5785,11 +5996,12 @@
     );
   }
 
-  late final _clang_Type_visitFields_ptr =
-      _lookup<ffi.NativeFunction<_c_clang_Type_visitFields>>(
-          'clang_Type_visitFields');
-  late final _dart_clang_Type_visitFields _clang_Type_visitFields =
-      _clang_Type_visitFields_ptr.asFunction<_dart_clang_Type_visitFields>();
+  late final _clang_Type_visitFields_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Uint32 Function(
+              CXType, CXFieldVisitor, CXClientData)>>('clang_Type_visitFields');
+  late final _clang_Type_visitFields = _clang_Type_visitFields_ptr
+      .asFunction<int Function(CXType, CXFieldVisitor, CXClientData)>();
 }
 
 /// Error codes returned by libclang routines.
@@ -5827,8 +6039,15 @@
 
 class CXVirtualFileOverlayImpl extends ffi.Opaque {}
 
+/// Object encapsulating information about overlaying virtual file/directories
+/// over the real file system.
+typedef CXVirtualFileOverlay = ffi.Pointer<CXVirtualFileOverlayImpl>;
+
 class CXModuleMapDescriptorImpl extends ffi.Opaque {}
 
+/// Object encapsulating information about a module.map file.
+typedef CXModuleMapDescriptor = ffi.Pointer<CXModuleMapDescriptorImpl>;
+
 class CXTargetInfoImpl extends ffi.Opaque {}
 
 class CXTranslationUnitImpl extends ffi.Opaque {}
@@ -5917,6 +6136,10 @@
   static const int CXCursor_ExceptionSpecificationKind_NoThrow = 9;
 }
 
+/// An "index" that consists of a set of translation units that would typically
+/// be linked together into an executable or library.
+typedef CXIndex = ffi.Pointer<ffi.Void>;
+
 abstract class CXGlobalOptFlags {
   /// Used to indicate that no special CXIndex options are needed.
   static const int CXGlobalOpt_None = 0;
@@ -5934,6 +6157,9 @@
   static const int CXGlobalOpt_ThreadBackgroundPriorityForAll = 3;
 }
 
+/// A particular source file that is part of a translation unit.
+typedef CXFile = ffi.Pointer<ffi.Void>;
+
 /// Uniquely identifies a CXFile, that refers to the same underlying file,
 /// across an indexing session.
 class CXFileUniqueID extends ffi.Struct {
@@ -5941,6 +6167,9 @@
   external ffi.Array<ffi.Uint64> data;
 }
 
+/// A single translation unit, which resides in an index.
+typedef CXTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>;
+
 /// Identifies a specific source location within a translation unit.
 class CXSourceLocation extends ffi.Struct {
   @ffi.Array.multi([2])
@@ -5992,6 +6221,13 @@
   static const int CXDiagnostic_Fatal = 4;
 }
 
+/// A group of CXDiagnostics.
+typedef CXDiagnosticSet = ffi.Pointer<ffi.Void>;
+
+/// A single diagnostic, containing the diagnostic's severity, location, text,
+/// source ranges, and fix-it hints.
+typedef CXDiagnostic = ffi.Pointer<ffi.Void>;
+
 /// Describes the kind of error that occurred (if any) in a call to
 /// clang_loadDiagnostics.
 abstract class CXLoadDiag_Error {
@@ -6168,6 +6404,9 @@
   external ffi.Pointer<CXTUResourceUsageEntry> entries;
 }
 
+/// An opaque type representing target information for a given translation unit.
+typedef CXTargetInfo = ffi.Pointer<CXTargetInfoImpl>;
+
 /// Describes the kind of entity that a cursor refers to.
 abstract class CXCursorKind {
   /// A declaration whose specific kind is not exposed via this interface.
@@ -6914,6 +7153,9 @@
 
 class CXCursorSetImpl extends ffi.Opaque {}
 
+/// A fast container representing a set of CXCursors.
+typedef CXCursorSet = ffi.Pointer<CXCursorSetImpl>;
+
 /// Describes the kind of type
 abstract class CXTypeKind {
   /// Represents an invalid type (e.g., where no type is available).
@@ -7174,6 +7416,14 @@
   static const int CXChildVisit_Recurse = 2;
 }
 
+/// Visitor invoked for each cursor found by a traversal.
+typedef CXCursorVisitor = ffi.Pointer<
+    ffi.NativeFunction<ffi.Int32 Function(CXCursor, CXCursor, CXClientData)>>;
+
+/// Opaque pointer representing client data that will be passed through to
+/// various callbacks and visitors.
+typedef CXClientData = ffi.Pointer<ffi.Void>;
+
 /// Properties for the printing policy.
 abstract class CXPrintingPolicyProperty {
   static const int CXPrintingPolicy_Indentation = 0;
@@ -7205,6 +7455,10 @@
   static const int CXPrintingPolicy_LastProperty = 25;
 }
 
+/// Opaque pointer representing a policy that controls pretty printing for
+/// clang_getCursorPrettyPrinted.
+typedef CXPrintingPolicy = ffi.Pointer<ffi.Void>;
+
 /// Property attributes for a CXCursor_ObjCPropertyDecl.
 abstract class CXObjCPropertyAttrKind {
   static const int CXObjCPropertyAttr_noattr = 0;
@@ -7235,6 +7489,9 @@
   static const int CXObjCDeclQualifier_Oneway = 32;
 }
 
+/// The functions in this group provide access to information about modules.
+typedef CXModule = ffi.Pointer<ffi.Void>;
+
 abstract class CXNameRefFlags {
   /// Include the nested-name-specifier, e.g. Foo:: in x.Foo::y, in the range.
   static const int CXNameRange_WantQualifier = 1;
@@ -7281,9 +7538,12 @@
 
   /// The code-completion string that describes how to insert this
   /// code-completion result into the editing buffer.
-  external ffi.Pointer<ffi.Void> CompletionString;
+  external CXCompletionString CompletionString;
 }
 
+/// A semantic string that describes a code-completion result.
+typedef CXCompletionString = ffi.Pointer<ffi.Void>;
+
 /// Describes a single piece of text within a code-completion string.
 abstract class CXCompletionChunkKind {
   /// A code-completion string that describes "optional" text that could be a
@@ -7484,6 +7744,13 @@
   static const int CXCompletionContext_Unknown = 8388607;
 }
 
+/// Visitor invoked for each file in a translation unit (used with
+/// clang_getInclusions()).
+typedef CXInclusionVisitor = ffi.Pointer<
+    ffi.NativeFunction<
+        ffi.Void Function(
+            CXFile, ffi.Pointer<CXSourceLocation>, ffi.Uint32, CXClientData)>>;
+
 abstract class CXEvalResultKind {
   static const int CXEval_Int = 1;
   static const int CXEval_Float = 2;
@@ -7494,6 +7761,12 @@
   static const int CXEval_UnExposed = 0;
 }
 
+/// Evaluation result of a cursor
+typedef CXEvalResult = ffi.Pointer<ffi.Void>;
+
+/// A remapping of original source files and their translated files.
+typedef CXRemapping = ffi.Pointer<ffi.Void>;
+
 /// @{
 abstract class CXVisitorResult {
   static const int CXVisit_Break = 0;
@@ -7503,7 +7776,10 @@
 class CXCursorAndRangeVisitor extends ffi.Struct {
   external ffi.Pointer<ffi.Void> context;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_2>> visit;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ffi.Void>, CXCursor, CXSourceRange)>> visit;
 }
 
 abstract class CXResult {
@@ -7535,7 +7811,7 @@
   external ffi.Pointer<ffi.Int8> filename;
 
   /// The actual file that the #include/#import directive resolved to.
-  external ffi.Pointer<ffi.Void> file;
+  external CXFile file;
 
   @ffi.Int32()
   external int isImport;
@@ -7551,10 +7827,10 @@
 /// Data for IndexerCallbacks#importedASTFile.
 class CXIdxImportedASTFileInfo extends ffi.Struct {
   /// Top level AST file containing the imported PCH, module or submodule.
-  external ffi.Pointer<ffi.Void> file;
+  external CXFile file;
 
   /// The imported module or NULL if the AST file is a PCH.
-  external ffi.Pointer<ffi.Void> module;
+  external CXModule module;
 
   /// Location where the file is imported. Applicable only for modules.
   external CXIdxLoc loc;
@@ -7834,28 +8110,72 @@
 class IndexerCallbacks extends ffi.Struct {
   /// Called periodically to check whether indexing should be aborted. Should
   /// return 0 to continue, and non-zero to abort.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_3>> abortQuery;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(CXClientData, ffi.Pointer<ffi.Void>)>> abortQuery;
 
   /// Called at the end of indexing; passes the complete diagnostic set.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_4>> diagnostic;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  CXClientData, CXDiagnosticSet, ffi.Pointer<ffi.Void>)>>
+      diagnostic;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_5>> enteredMainFile;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          CXIdxClientFile Function(
+              CXClientData, CXFile, ffi.Pointer<ffi.Void>)>> enteredMainFile;
 
   /// Called when a file gets #included/#imported.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_6>> ppIncludedFile;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              CXIdxClientFile Function(
+                  CXClientData, ffi.Pointer<CXIdxIncludedFileInfo>)>>
+      ppIncludedFile;
 
   /// Called when a AST file (PCH or module) gets imported.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_7>> importedASTFile;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              CXIdxClientASTFile Function(
+                  CXClientData, ffi.Pointer<CXIdxImportedASTFileInfo>)>>
+      importedASTFile;
 
   /// Called at the beginning of indexing a translation unit.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_8>> startedTranslationUnit;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          CXIdxClientContainer Function(
+              CXClientData, ffi.Pointer<ffi.Void>)>> startedTranslationUnit;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_9>> indexDeclaration;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(CXClientData, ffi.Pointer<CXIdxDeclInfo>)>>
+      indexDeclaration;
 
   /// Called to index a reference of an entity.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_10>> indexEntityReference;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(CXClientData, ffi.Pointer<CXIdxEntityRefInfo>)>>
+      indexEntityReference;
 }
 
+/// The client's data object that is associated with a CXFile.
+typedef CXIdxClientFile = ffi.Pointer<ffi.Void>;
+
+/// The client's data object that is associated with an AST file (PCH or
+/// module).
+typedef CXIdxClientASTFile = ffi.Pointer<ffi.Void>;
+
+/// The client's data object that is associated with a semantic container of
+/// entities.
+typedef CXIdxClientContainer = ffi.Pointer<ffi.Void>;
+
+/// The client's data object that is associated with a semantic entity.
+typedef CXIdxClientEntity = ffi.Pointer<ffi.Void>;
+
+/// An indexing action/session, to be applied to one or multiple translation
+/// units.
+typedef CXIndexAction = ffi.Pointer<ffi.Void>;
+
 abstract class CXIndexOptFlags {
   /// Used to indicate that no special indexing options are needed.
   static const int CXIndexOpt_None = 0;
@@ -7882,6 +8202,10 @@
   static const int CXIndexOpt_SkipParsedBodiesInSession = 16;
 }
 
+/// Visitor invoked for each field found by a traversal.
+typedef CXFieldVisitor = ffi
+    .Pointer<ffi.NativeFunction<ffi.Int32 Function(CXCursor, CXClientData)>>;
+
 const int CINDEX_VERSION_MAJOR = 0;
 
 const int CINDEX_VERSION_MINOR = 59;
@@ -7889,3156 +8213,3 @@
 const int CINDEX_VERSION = 59;
 
 const String CINDEX_VERSION_STRING = '0.59';
-
-typedef _c_clang_getCString = ffi.Pointer<ffi.Int8> Function(
-  CXString string,
-);
-
-typedef _dart_clang_getCString = ffi.Pointer<ffi.Int8> Function(
-  CXString string,
-);
-
-typedef _c_clang_disposeString = ffi.Void Function(
-  CXString string,
-);
-
-typedef _dart_clang_disposeString = void Function(
-  CXString string,
-);
-
-typedef _c_clang_disposeStringSet = ffi.Void Function(
-  ffi.Pointer<CXStringSet> set_1,
-);
-
-typedef _dart_clang_disposeStringSet = void Function(
-  ffi.Pointer<CXStringSet> set_1,
-);
-
-typedef _c_clang_getBuildSessionTimestamp = ffi.Uint64 Function();
-
-typedef _dart_clang_getBuildSessionTimestamp = int Function();
-
-typedef _c_clang_VirtualFileOverlay_create
-    = ffi.Pointer<CXVirtualFileOverlayImpl> Function(
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_VirtualFileOverlay_create
-    = ffi.Pointer<CXVirtualFileOverlayImpl> Function(
-  int options,
-);
-
-typedef _c_clang_VirtualFileOverlay_addFileMapping = ffi.Int32 Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-  ffi.Pointer<ffi.Int8> virtualPath,
-  ffi.Pointer<ffi.Int8> realPath,
-);
-
-typedef _dart_clang_VirtualFileOverlay_addFileMapping = int Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-  ffi.Pointer<ffi.Int8> virtualPath,
-  ffi.Pointer<ffi.Int8> realPath,
-);
-
-typedef _c_clang_VirtualFileOverlay_setCaseSensitivity = ffi.Int32 Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-  ffi.Int32 caseSensitive,
-);
-
-typedef _dart_clang_VirtualFileOverlay_setCaseSensitivity = int Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-  int caseSensitive,
-);
-
-typedef _c_clang_VirtualFileOverlay_writeToBuffer = ffi.Int32 Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-  ffi.Uint32 options,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> out_buffer_ptr,
-  ffi.Pointer<ffi.Uint32> out_buffer_size,
-);
-
-typedef _dart_clang_VirtualFileOverlay_writeToBuffer = int Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-  int options,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> out_buffer_ptr,
-  ffi.Pointer<ffi.Uint32> out_buffer_size,
-);
-
-typedef _c_clang_free = ffi.Void Function(
-  ffi.Pointer<ffi.Void> buffer,
-);
-
-typedef _dart_clang_free = void Function(
-  ffi.Pointer<ffi.Void> buffer,
-);
-
-typedef _c_clang_VirtualFileOverlay_dispose = ffi.Void Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-);
-
-typedef _dart_clang_VirtualFileOverlay_dispose = void Function(
-  ffi.Pointer<CXVirtualFileOverlayImpl> arg0,
-);
-
-typedef _c_clang_ModuleMapDescriptor_create
-    = ffi.Pointer<CXModuleMapDescriptorImpl> Function(
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_ModuleMapDescriptor_create
-    = ffi.Pointer<CXModuleMapDescriptorImpl> Function(
-  int options,
-);
-
-typedef _c_clang_ModuleMapDescriptor_setFrameworkModuleName = ffi.Int32
-    Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_clang_ModuleMapDescriptor_setFrameworkModuleName = int Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_clang_ModuleMapDescriptor_setUmbrellaHeader = ffi.Int32 Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _dart_clang_ModuleMapDescriptor_setUmbrellaHeader = int Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-  ffi.Pointer<ffi.Int8> name,
-);
-
-typedef _c_clang_ModuleMapDescriptor_writeToBuffer = ffi.Int32 Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-  ffi.Uint32 options,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> out_buffer_ptr,
-  ffi.Pointer<ffi.Uint32> out_buffer_size,
-);
-
-typedef _dart_clang_ModuleMapDescriptor_writeToBuffer = int Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-  int options,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> out_buffer_ptr,
-  ffi.Pointer<ffi.Uint32> out_buffer_size,
-);
-
-typedef _c_clang_ModuleMapDescriptor_dispose = ffi.Void Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-);
-
-typedef _dart_clang_ModuleMapDescriptor_dispose = void Function(
-  ffi.Pointer<CXModuleMapDescriptorImpl> arg0,
-);
-
-typedef _c_clang_createIndex = ffi.Pointer<ffi.Void> Function(
-  ffi.Int32 excludeDeclarationsFromPCH,
-  ffi.Int32 displayDiagnostics,
-);
-
-typedef _dart_clang_createIndex = ffi.Pointer<ffi.Void> Function(
-  int excludeDeclarationsFromPCH,
-  int displayDiagnostics,
-);
-
-typedef _c_clang_disposeIndex = ffi.Void Function(
-  ffi.Pointer<ffi.Void> index,
-);
-
-typedef _dart_clang_disposeIndex = void Function(
-  ffi.Pointer<ffi.Void> index,
-);
-
-typedef _c_clang_CXIndex_setGlobalOptions = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_CXIndex_setGlobalOptions = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  int options,
-);
-
-typedef _c_clang_CXIndex_getGlobalOptions = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_CXIndex_getGlobalOptions = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_CXIndex_setInvocationEmissionPathOption = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Int8> Path,
-);
-
-typedef _dart_clang_CXIndex_setInvocationEmissionPathOption = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Int8> Path,
-);
-
-typedef _c_clang_getFileName = CXString Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileName = CXString Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _c_clang_getFileTime = ffi.Int64 Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileTime = int Function(
-  ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _c_clang_getFileUniqueID = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<CXFileUniqueID> outID,
-);
-
-typedef _dart_clang_getFileUniqueID = int Function(
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<CXFileUniqueID> outID,
-);
-
-typedef _c_clang_isFileMultipleIncludeGuarded = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_isFileMultipleIncludeGuarded = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _c_clang_getFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Int8> file_name,
-);
-
-typedef _dart_clang_getFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Int8> file_name,
-);
-
-typedef _c_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<ffi.Uint64> size,
-);
-
-typedef _dart_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Pointer<ffi.Uint64> size,
-);
-
-typedef _c_clang_File_isEqual = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> file1,
-  ffi.Pointer<ffi.Void> file2,
-);
-
-typedef _dart_clang_File_isEqual = int Function(
-  ffi.Pointer<ffi.Void> file1,
-  ffi.Pointer<ffi.Void> file2,
-);
-
-typedef _c_clang_File_tryGetRealPathName = CXString Function(
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_File_tryGetRealPathName = CXString Function(
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _c_clang_getNullLocation = CXSourceLocation Function();
-
-typedef _dart_clang_getNullLocation = CXSourceLocation Function();
-
-typedef _c_clang_equalLocations = ffi.Uint32 Function(
-  CXSourceLocation loc1,
-  CXSourceLocation loc2,
-);
-
-typedef _dart_clang_equalLocations = int Function(
-  CXSourceLocation loc1,
-  CXSourceLocation loc2,
-);
-
-typedef _c_clang_getLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Uint32 line,
-  ffi.Uint32 column,
-);
-
-typedef _dart_clang_getLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  int line,
-  int column,
-);
-
-typedef _c_clang_getLocationForOffset = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  ffi.Uint32 offset,
-);
-
-typedef _dart_clang_getLocationForOffset = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-  int offset,
-);
-
-typedef _c_clang_Location_isInSystemHeader = ffi.Int32 Function(
-  CXSourceLocation location,
-);
-
-typedef _dart_clang_Location_isInSystemHeader = int Function(
-  CXSourceLocation location,
-);
-
-typedef _c_clang_Location_isFromMainFile = ffi.Int32 Function(
-  CXSourceLocation location,
-);
-
-typedef _dart_clang_Location_isFromMainFile = int Function(
-  CXSourceLocation location,
-);
-
-typedef _c_clang_getNullRange = CXSourceRange Function();
-
-typedef _dart_clang_getNullRange = CXSourceRange Function();
-
-typedef _c_clang_getRange = CXSourceRange Function(
-  CXSourceLocation begin,
-  CXSourceLocation end,
-);
-
-typedef _dart_clang_getRange = CXSourceRange Function(
-  CXSourceLocation begin,
-  CXSourceLocation end,
-);
-
-typedef _c_clang_equalRanges = ffi.Uint32 Function(
-  CXSourceRange range1,
-  CXSourceRange range2,
-);
-
-typedef _dart_clang_equalRanges = int Function(
-  CXSourceRange range1,
-  CXSourceRange range2,
-);
-
-typedef _c_clang_Range_isNull = ffi.Int32 Function(
-  CXSourceRange range,
-);
-
-typedef _dart_clang_Range_isNull = int Function(
-  CXSourceRange range,
-);
-
-typedef _c_clang_getExpansionLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getExpansionLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _c_clang_getPresumedLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<CXString> filename,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-);
-
-typedef _dart_clang_getPresumedLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<CXString> filename,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-);
-
-typedef _c_clang_getInstantiationLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getInstantiationLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _c_clang_getSpellingLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getSpellingLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _c_clang_getFileLocation = ffi.Void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getFileLocation = void Function(
-  CXSourceLocation location,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _c_clang_getRangeStart = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef _dart_clang_getRangeStart = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef _c_clang_getRangeEnd = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef _dart_clang_getRangeEnd = CXSourceLocation Function(
-  CXSourceRange range,
-);
-
-typedef _c_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.Void> file,
-);
-
-typedef _c_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-typedef _dart_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-typedef _c_clang_disposeSourceRangeList = ffi.Void Function(
-  ffi.Pointer<CXSourceRangeList> ranges,
-);
-
-typedef _dart_clang_disposeSourceRangeList = void Function(
-  ffi.Pointer<CXSourceRangeList> ranges,
-);
-
-typedef _c_clang_getNumDiagnosticsInSet = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _dart_clang_getNumDiagnosticsInSet = int Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _c_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Diags,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Diags,
-  int Index,
-);
-
-typedef _c_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> file,
-  ffi.Pointer<ffi.Int32> error,
-  ffi.Pointer<CXString> errorString,
-);
-
-typedef _dart_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> file,
-  ffi.Pointer<ffi.Int32> error,
-  ffi.Pointer<CXString> errorString,
-);
-
-typedef _c_clang_disposeDiagnosticSet = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _dart_clang_disposeDiagnosticSet = void Function(
-  ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _c_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> D,
-);
-
-typedef _dart_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> D,
-);
-
-typedef _c_clang_getNumDiagnostics = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getNumDiagnostics = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _c_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-  int Index,
-);
-
-typedef _c_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _c_clang_disposeDiagnostic = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_disposeDiagnostic = void Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _c_clang_formatDiagnostic = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  ffi.Uint32 Options,
-);
-
-typedef _dart_clang_formatDiagnostic = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  int Options,
-);
-
-typedef _c_clang_defaultDiagnosticDisplayOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultDiagnosticDisplayOptions = int Function();
-
-typedef _c_clang_getDiagnosticSeverity = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticSeverity = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_getDiagnosticLocation = CXSourceLocation Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticLocation = CXSourceLocation Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_getDiagnosticSpelling = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticSpelling = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_getDiagnosticOption = CXString Function(
-  ffi.Pointer<ffi.Void> Diag,
-  ffi.Pointer<CXString> Disable,
-);
-
-typedef _dart_clang_getDiagnosticOption = CXString Function(
-  ffi.Pointer<ffi.Void> Diag,
-  ffi.Pointer<CXString> Disable,
-);
-
-typedef _c_clang_getDiagnosticCategory = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticCategory = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_getDiagnosticCategoryName = CXString Function(
-  ffi.Uint32 Category,
-);
-
-typedef _dart_clang_getDiagnosticCategoryName = CXString Function(
-  int Category,
-);
-
-typedef _c_clang_getDiagnosticCategoryText = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticCategoryText = CXString Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_getDiagnosticNumRanges = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticNumRanges = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_getDiagnosticRange = CXSourceRange Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  ffi.Uint32 Range,
-);
-
-typedef _dart_clang_getDiagnosticRange = CXSourceRange Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  int Range,
-);
-
-typedef _c_clang_getDiagnosticNumFixIts = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_getDiagnosticNumFixIts = int Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _c_clang_getDiagnosticFixIt = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  ffi.Uint32 FixIt,
-  ffi.Pointer<CXSourceRange> ReplacementRange,
-);
-
-typedef _dart_clang_getDiagnosticFixIt = CXString Function(
-  ffi.Pointer<ffi.Void> Diagnostic,
-  int FixIt,
-  ffi.Pointer<CXSourceRange> ReplacementRange,
-);
-
-typedef _c_clang_getTranslationUnitSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef _dart_clang_getTranslationUnitSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef _c_clang_createTranslationUnitFromSourceFile
-    = ffi.Pointer<CXTranslationUnitImpl> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Int32 num_clang_command_line_args,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-);
-
-typedef _dart_clang_createTranslationUnitFromSourceFile
-    = ffi.Pointer<CXTranslationUnitImpl> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  int num_clang_command_line_args,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
-  int num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-);
-
-typedef _c_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-);
-
-typedef _dart_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-);
-
-typedef _c_clang_createTranslationUnit2 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_createTranslationUnit2 = int Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> ast_filename,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _c_clang_defaultEditingTranslationUnitOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultEditingTranslationUnitOptions = int Function();
-
-typedef _c_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-);
-
-typedef _c_clang_parseTranslationUnit2 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_parseTranslationUnit2 = int Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _c_clang_parseTranslationUnit2FullArgv = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_parseTranslationUnit2FullArgv = int Function(
-  ffi.Pointer<ffi.Void> CIdx,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _c_clang_defaultSaveOptions = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_defaultSaveOptions = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _c_clang_saveTranslationUnit = ffi.Int32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> FileName,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_saveTranslationUnit = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> FileName,
-  int options,
-);
-
-typedef _c_clang_suspendTranslationUnit = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_suspendTranslationUnit = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _c_clang_disposeTranslationUnit = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_disposeTranslationUnit = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _c_clang_defaultReparseOptions = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_defaultReparseOptions = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _c_clang_reparseTranslationUnit = ffi.Int32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_reparseTranslationUnit = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  int num_unsaved_files,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int options,
-);
-
-typedef _c_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
-  ffi.Int32 kind,
-);
-
-typedef _dart_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
-  int kind,
-);
-
-typedef _c_clang_getCXTUResourceUsage = CXTUResourceUsage Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_getCXTUResourceUsage = CXTUResourceUsage Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _c_clang_disposeCXTUResourceUsage = ffi.Void Function(
-  CXTUResourceUsage usage,
-);
-
-typedef _dart_clang_disposeCXTUResourceUsage = void Function(
-  CXTUResourceUsage usage,
-);
-
-typedef _c_clang_getTranslationUnitTargetInfo = ffi.Pointer<CXTargetInfoImpl>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef _dart_clang_getTranslationUnitTargetInfo = ffi.Pointer<CXTargetInfoImpl>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef _c_clang_TargetInfo_dispose = ffi.Void Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_dispose = void Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _c_clang_TargetInfo_getTriple = CXString Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_getTriple = CXString Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _c_clang_TargetInfo_getPointerWidth = ffi.Int32 Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_getPointerWidth = int Function(
-  ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _c_clang_getNullCursor = CXCursor Function();
-
-typedef _dart_clang_getNullCursor = CXCursor Function();
-
-typedef _c_clang_getTranslationUnitCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_getTranslationUnitCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _c_clang_equalCursors = ffi.Uint32 Function(
-  CXCursor arg0,
-  CXCursor arg1,
-);
-
-typedef _dart_clang_equalCursors = int Function(
-  CXCursor arg0,
-  CXCursor arg1,
-);
-
-typedef _c_clang_Cursor_isNull = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_Cursor_isNull = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_hashCursor = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_hashCursor = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorKind = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorKind = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_isDeclaration = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isDeclaration = int Function(
-  int arg0,
-);
-
-typedef _c_clang_isInvalidDeclaration = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_isInvalidDeclaration = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_isReference = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isReference = int Function(
-  int arg0,
-);
-
-typedef _c_clang_isExpression = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isExpression = int Function(
-  int arg0,
-);
-
-typedef _c_clang_isStatement = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isStatement = int Function(
-  int arg0,
-);
-
-typedef _c_clang_isAttribute = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isAttribute = int Function(
-  int arg0,
-);
-
-typedef _c_clang_Cursor_hasAttrs = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_hasAttrs = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_isInvalid = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isInvalid = int Function(
-  int arg0,
-);
-
-typedef _c_clang_isTranslationUnit = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isTranslationUnit = int Function(
-  int arg0,
-);
-
-typedef _c_clang_isPreprocessing = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isPreprocessing = int Function(
-  int arg0,
-);
-
-typedef _c_clang_isUnexposed = ffi.Uint32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isUnexposed = int Function(
-  int arg0,
-);
-
-typedef _c_clang_getCursorLinkage = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorLinkage = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursorVisibility = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorVisibility = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursorAvailability = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorAvailability = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursorPlatformAvailability = ffi.Int32 Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Int32> always_deprecated,
-  ffi.Pointer<CXString> deprecated_message,
-  ffi.Pointer<ffi.Int32> always_unavailable,
-  ffi.Pointer<CXString> unavailable_message,
-  ffi.Pointer<CXPlatformAvailability> availability,
-  ffi.Int32 availability_size,
-);
-
-typedef _dart_clang_getCursorPlatformAvailability = int Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Int32> always_deprecated,
-  ffi.Pointer<CXString> deprecated_message,
-  ffi.Pointer<ffi.Int32> always_unavailable,
-  ffi.Pointer<CXString> unavailable_message,
-  ffi.Pointer<CXPlatformAvailability> availability,
-  int availability_size,
-);
-
-typedef _c_clang_disposeCXPlatformAvailability = ffi.Void Function(
-  ffi.Pointer<CXPlatformAvailability> availability,
-);
-
-typedef _dart_clang_disposeCXPlatformAvailability = void Function(
-  ffi.Pointer<CXPlatformAvailability> availability,
-);
-
-typedef _c_clang_getCursorLanguage = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorLanguage = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursorTLSKind = ffi.Int32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorTLSKind = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_Cursor_getTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
-    Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getTranslationUnit
-    = ffi.Pointer<CXTranslationUnitImpl> Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl> Function();
-
-typedef _dart_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl> Function();
-
-typedef _c_clang_disposeCXCursorSet = ffi.Void Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-);
-
-typedef _dart_clang_disposeCXCursorSet = void Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-);
-
-typedef _c_clang_CXCursorSet_contains = ffi.Uint32 Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef _dart_clang_CXCursorSet_contains = int Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef _c_clang_CXCursorSet_insert = ffi.Uint32 Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef _dart_clang_CXCursorSet_insert = int Function(
-  ffi.Pointer<CXCursorSetImpl> cset,
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursorSemanticParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorSemanticParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursorLexicalParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorLexicalParent = CXCursor Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getOverriddenCursors = ffi.Void Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Pointer<CXCursor>> overridden,
-  ffi.Pointer<ffi.Uint32> num_overridden,
-);
-
-typedef _dart_clang_getOverriddenCursors = void Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Pointer<CXCursor>> overridden,
-  ffi.Pointer<ffi.Uint32> num_overridden,
-);
-
-typedef _c_clang_disposeOverriddenCursors = ffi.Void Function(
-  ffi.Pointer<CXCursor> overridden,
-);
-
-typedef _dart_clang_disposeOverriddenCursors = void Function(
-  ffi.Pointer<CXCursor> overridden,
-);
-
-typedef _c_clang_getIncludedFile = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getIncludedFile = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXSourceLocation arg1,
-);
-
-typedef _dart_clang_getCursor = CXCursor Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXSourceLocation arg1,
-);
-
-typedef _c_clang_getCursorLocation = CXSourceLocation Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorLocation = CXSourceLocation Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorExtent = CXSourceRange Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorExtent = CXSourceRange Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getCursorType = CXType Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getTypeSpelling = CXString Function(
-  CXType CT,
-);
-
-typedef _dart_clang_getTypeSpelling = CXString Function(
-  CXType CT,
-);
-
-typedef _c_clang_getTypedefDeclUnderlyingType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getTypedefDeclUnderlyingType = CXType Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getEnumDeclIntegerType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getEnumDeclIntegerType = CXType Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getEnumConstantDeclValue = ffi.Int64 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getEnumConstantDeclValue = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getEnumConstantDeclUnsignedValue = ffi.Uint64 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getEnumConstantDeclUnsignedValue = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getFieldDeclBitWidth = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getFieldDeclBitWidth = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getNumArguments = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getNumArguments = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getArgument = CXCursor Function(
-  CXCursor C,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Cursor_getArgument = CXCursor Function(
-  CXCursor C,
-  int i,
-);
-
-typedef _c_clang_Cursor_getNumTemplateArguments = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getNumTemplateArguments = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getTemplateArgumentKind = ffi.Int32 Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentKind = int Function(
-  CXCursor C,
-  int I,
-);
-
-typedef _c_clang_Cursor_getTemplateArgumentType = CXType Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentType = CXType Function(
-  CXCursor C,
-  int I,
-);
-
-typedef _c_clang_Cursor_getTemplateArgumentValue = ffi.Int64 Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentValue = int Function(
-  CXCursor C,
-  int I,
-);
-
-typedef _c_clang_Cursor_getTemplateArgumentUnsignedValue = ffi.Uint64 Function(
-  CXCursor C,
-  ffi.Uint32 I,
-);
-
-typedef _dart_clang_Cursor_getTemplateArgumentUnsignedValue = int Function(
-  CXCursor C,
-  int I,
-);
-
-typedef _c_clang_equalTypes = ffi.Uint32 Function(
-  CXType A,
-  CXType B,
-);
-
-typedef _dart_clang_equalTypes = int Function(
-  CXType A,
-  CXType B,
-);
-
-typedef _c_clang_getCanonicalType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getCanonicalType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_isConstQualifiedType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isConstQualifiedType = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Cursor_isMacroFunctionLike = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isMacroFunctionLike = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isMacroBuiltin = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isMacroBuiltin = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isFunctionInlined = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isFunctionInlined = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_isVolatileQualifiedType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isVolatileQualifiedType = int Function(
-  CXType T,
-);
-
-typedef _c_clang_isRestrictQualifiedType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isRestrictQualifiedType = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getAddressSpace = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getAddressSpace = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getTypedefName = CXString Function(
-  CXType CT,
-);
-
-typedef _dart_clang_getTypedefName = CXString Function(
-  CXType CT,
-);
-
-typedef _c_clang_getPointeeType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getPointeeType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_getTypeDeclaration = CXCursor Function(
-  CXType T,
-);
-
-typedef _dart_clang_getTypeDeclaration = CXCursor Function(
-  CXType T,
-);
-
-typedef _c_clang_getDeclObjCTypeEncoding = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getDeclObjCTypeEncoding = CXString Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Type_getObjCEncoding = CXString Function(
-  CXType type,
-);
-
-typedef _dart_clang_Type_getObjCEncoding = CXString Function(
-  CXType type,
-);
-
-typedef _c_clang_getTypeKindSpelling = CXString Function(
-  ffi.Int32 K,
-);
-
-typedef _dart_clang_getTypeKindSpelling = CXString Function(
-  int K,
-);
-
-typedef _c_clang_getFunctionTypeCallingConv = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getFunctionTypeCallingConv = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getResultType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getResultType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_getExceptionSpecificationType = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getExceptionSpecificationType = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getNumArgTypes = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getNumArgTypes = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getArgType = CXType Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_getArgType = CXType Function(
-  CXType T,
-  int i,
-);
-
-typedef _c_clang_Type_getObjCObjectBaseType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getObjCObjectBaseType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getNumObjCProtocolRefs = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNumObjCProtocolRefs = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getObjCProtocolDecl = CXCursor Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Type_getObjCProtocolDecl = CXCursor Function(
-  CXType T,
-  int i,
-);
-
-typedef _c_clang_Type_getNumObjCTypeArgs = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNumObjCTypeArgs = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getObjCTypeArg = CXType Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Type_getObjCTypeArg = CXType Function(
-  CXType T,
-  int i,
-);
-
-typedef _c_clang_isFunctionTypeVariadic = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isFunctionTypeVariadic = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getCursorResultType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getCursorResultType = CXType Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getCursorExceptionSpecificationType = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getCursorExceptionSpecificationType = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_isPODType = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_isPODType = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getElementType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getElementType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_getNumElements = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getNumElements = int Function(
-  CXType T,
-);
-
-typedef _c_clang_getArrayElementType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_getArrayElementType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_getArraySize = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_getArraySize = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getNamedType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNamedType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_isTransparentTagTypedef = ffi.Uint32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_isTransparentTagTypedef = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getNullability = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNullability = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getAlignOf = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getAlignOf = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getClassType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getClassType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getSizeOf = ffi.Int64 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getSizeOf = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getOffsetOf = ffi.Int64 Function(
-  CXType T,
-  ffi.Pointer<ffi.Int8> S,
-);
-
-typedef _dart_clang_Type_getOffsetOf = int Function(
-  CXType T,
-  ffi.Pointer<ffi.Int8> S,
-);
-
-typedef _c_clang_Type_getModifiedType = CXType Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getModifiedType = CXType Function(
-  CXType T,
-);
-
-typedef _c_clang_Cursor_getOffsetOfField = ffi.Int64 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getOffsetOfField = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isAnonymous = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isAnonymous = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isAnonymousRecordDecl = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isAnonymousRecordDecl = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isInlineNamespace = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isInlineNamespace = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Type_getNumTemplateArguments = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getNumTemplateArguments = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Type_getTemplateArgumentAsType = CXType Function(
-  CXType T,
-  ffi.Uint32 i,
-);
-
-typedef _dart_clang_Type_getTemplateArgumentAsType = CXType Function(
-  CXType T,
-  int i,
-);
-
-typedef _c_clang_Type_getCXXRefQualifier = ffi.Int32 Function(
-  CXType T,
-);
-
-typedef _dart_clang_Type_getCXXRefQualifier = int Function(
-  CXType T,
-);
-
-typedef _c_clang_Cursor_isBitField = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isBitField = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_isVirtualBase = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_isVirtualBase = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCXXAccessSpecifier = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCXXAccessSpecifier = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_getStorageClass = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getStorageClass = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getNumOverloadedDecls = ffi.Uint32 Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getNumOverloadedDecls = int Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getOverloadedDecl = CXCursor Function(
-  CXCursor cursor,
-  ffi.Uint32 index,
-);
-
-typedef _dart_clang_getOverloadedDecl = CXCursor Function(
-  CXCursor cursor,
-  int index,
-);
-
-typedef _c_clang_getIBOutletCollectionType = CXType Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getIBOutletCollectionType = CXType Function(
-  CXCursor arg0,
-);
-
-typedef CXCursorVisitor = ffi.Int32 Function(
-  CXCursor,
-  CXCursor,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_clang_visitChildren = ffi.Uint32 Function(
-  CXCursor parent,
-  ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_visitChildren = int Function(
-  CXCursor parent,
-  ffi.Pointer<ffi.NativeFunction<CXCursorVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _c_clang_getCursorUSR = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorUSR = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_constructUSR_ObjCClass = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-);
-
-typedef _dart_clang_constructUSR_ObjCClass = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-);
-
-typedef _c_clang_constructUSR_ObjCCategory = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-  ffi.Pointer<ffi.Int8> category_name,
-);
-
-typedef _dart_clang_constructUSR_ObjCCategory = CXString Function(
-  ffi.Pointer<ffi.Int8> class_name,
-  ffi.Pointer<ffi.Int8> category_name,
-);
-
-typedef _c_clang_constructUSR_ObjCProtocol = CXString Function(
-  ffi.Pointer<ffi.Int8> protocol_name,
-);
-
-typedef _dart_clang_constructUSR_ObjCProtocol = CXString Function(
-  ffi.Pointer<ffi.Int8> protocol_name,
-);
-
-typedef _c_clang_constructUSR_ObjCIvar = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  CXString classUSR,
-);
-
-typedef _dart_clang_constructUSR_ObjCIvar = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  CXString classUSR,
-);
-
-typedef _c_clang_constructUSR_ObjCMethod = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  ffi.Uint32 isInstanceMethod,
-  CXString classUSR,
-);
-
-typedef _dart_clang_constructUSR_ObjCMethod = CXString Function(
-  ffi.Pointer<ffi.Int8> name,
-  int isInstanceMethod,
-  CXString classUSR,
-);
-
-typedef _c_clang_constructUSR_ObjCProperty = CXString Function(
-  ffi.Pointer<ffi.Int8> property,
-  CXString classUSR,
-);
-
-typedef _dart_clang_constructUSR_ObjCProperty = CXString Function(
-  ffi.Pointer<ffi.Int8> property,
-  CXString classUSR,
-);
-
-typedef _c_clang_getCursorSpelling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorSpelling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_getSpellingNameRange = CXSourceRange Function(
-  CXCursor arg0,
-  ffi.Uint32 pieceIndex,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_Cursor_getSpellingNameRange = CXSourceRange Function(
-  CXCursor arg0,
-  int pieceIndex,
-  int options,
-);
-
-typedef _c_clang_PrintingPolicy_getProperty = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> Policy,
-  ffi.Int32 Property,
-);
-
-typedef _dart_clang_PrintingPolicy_getProperty = int Function(
-  ffi.Pointer<ffi.Void> Policy,
-  int Property,
-);
-
-typedef _c_clang_PrintingPolicy_setProperty = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Policy,
-  ffi.Int32 Property,
-  ffi.Uint32 Value,
-);
-
-typedef _dart_clang_PrintingPolicy_setProperty = void Function(
-  ffi.Pointer<ffi.Void> Policy,
-  int Property,
-  int Value,
-);
-
-typedef _c_clang_getCursorPrintingPolicy = ffi.Pointer<ffi.Void> Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorPrintingPolicy = ffi.Pointer<ffi.Void> Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_PrintingPolicy_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef _dart_clang_PrintingPolicy_dispose = void Function(
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef _c_clang_getCursorPrettyPrinted = CXString Function(
-  CXCursor Cursor,
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef _dart_clang_getCursorPrettyPrinted = CXString Function(
-  CXCursor Cursor,
-  ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef _c_clang_getCursorDisplayName = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorDisplayName = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorReferenced = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorReferenced = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCursorDefinition = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCursorDefinition = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_isCursorDefinition = ffi.Uint32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_isCursorDefinition = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_getCanonicalCursor = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_getCanonicalCursor = CXCursor Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_getObjCSelectorIndex = ffi.Int32 Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getObjCSelectorIndex = int Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_isDynamicCall = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isDynamicCall = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getReceiverType = CXType Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getReceiverType = CXType Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getObjCPropertyAttributes = ffi.Uint32 Function(
-  CXCursor C,
-  ffi.Uint32 reserved,
-);
-
-typedef _dart_clang_Cursor_getObjCPropertyAttributes = int Function(
-  CXCursor C,
-  int reserved,
-);
-
-typedef _c_clang_Cursor_getObjCPropertyGetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getObjCPropertyGetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getObjCPropertySetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getObjCPropertySetterName = CXString Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getObjCDeclQualifiers = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getObjCDeclQualifiers = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isObjCOptional = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isObjCOptional = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isVariadic = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_isVariadic = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_isExternalSymbol = ffi.Uint32 Function(
-  CXCursor C,
-  ffi.Pointer<CXString> language,
-  ffi.Pointer<CXString> definedIn,
-  ffi.Pointer<ffi.Uint32> isGenerated,
-);
-
-typedef _dart_clang_Cursor_isExternalSymbol = int Function(
-  CXCursor C,
-  ffi.Pointer<CXString> language,
-  ffi.Pointer<CXString> definedIn,
-  ffi.Pointer<ffi.Uint32> isGenerated,
-);
-
-typedef _c_clang_Cursor_getCommentRange = CXSourceRange Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getCommentRange = CXSourceRange Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getRawCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getRawCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getBriefCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getBriefCommentText = CXString Function(
-  CXCursor C,
-);
-
-typedef _c_clang_Cursor_getMangling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getMangling = CXString Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_getCXXManglings = ffi.Pointer<CXStringSet> Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getCXXManglings = ffi.Pointer<CXStringSet> Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_getObjCManglings = ffi.Pointer<CXStringSet> Function(
-  CXCursor arg0,
-);
-
-typedef _dart_clang_Cursor_getObjCManglings = ffi.Pointer<CXStringSet> Function(
-  CXCursor arg0,
-);
-
-typedef _c_clang_Cursor_getModule = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_getModule = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _c_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _c_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _c_clang_Module_getName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _c_clang_Module_getFullName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getFullName = CXString Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _c_clang_Module_isSystem = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_isSystem = int Function(
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _c_clang_Module_getNumTopLevelHeaders = ffi.Uint32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getNumTopLevelHeaders = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _c_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  ffi.Pointer<ffi.Void> Module,
-  int Index,
-);
-
-typedef _c_clang_CXXConstructor_isConvertingConstructor = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isConvertingConstructor = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXConstructor_isCopyConstructor = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isCopyConstructor = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXConstructor_isDefaultConstructor = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isDefaultConstructor = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXConstructor_isMoveConstructor = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXConstructor_isMoveConstructor = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXField_isMutable = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXField_isMutable = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXMethod_isDefaulted = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isDefaulted = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXMethod_isPureVirtual = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isPureVirtual = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXMethod_isStatic = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isStatic = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXMethod_isVirtual = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isVirtual = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXRecord_isAbstract = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXRecord_isAbstract = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_EnumDecl_isScoped = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_EnumDecl_isScoped = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_CXXMethod_isConst = ffi.Uint32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_CXXMethod_isConst = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getTemplateCursorKind = ffi.Int32 Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getTemplateCursorKind = int Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getSpecializedCursorTemplate = CXCursor Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_getSpecializedCursorTemplate = CXCursor Function(
-  CXCursor C,
-);
-
-typedef _c_clang_getCursorReferenceNameRange = CXSourceRange Function(
-  CXCursor C,
-  ffi.Uint32 NameFlags,
-  ffi.Uint32 PieceIndex,
-);
-
-typedef _dart_clang_getCursorReferenceNameRange = CXSourceRange Function(
-  CXCursor C,
-  int NameFlags,
-  int PieceIndex,
-);
-
-typedef _c_clang_getToken = ffi.Pointer<CXToken> Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceLocation Location,
-);
-
-typedef _dart_clang_getToken = ffi.Pointer<CXToken> Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceLocation Location,
-);
-
-typedef _c_clang_getTokenKind = ffi.Int32 Function(
-  CXToken arg0,
-);
-
-typedef _dart_clang_getTokenKind = int Function(
-  CXToken arg0,
-);
-
-typedef _c_clang_getTokenSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _dart_clang_getTokenSpelling = CXString Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _c_clang_getTokenLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _dart_clang_getTokenLocation = CXSourceLocation Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _c_clang_getTokenExtent = CXSourceRange Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _dart_clang_getTokenExtent = CXSourceRange Function(
-  ffi.Pointer<CXTranslationUnitImpl> arg0,
-  CXToken arg1,
-);
-
-typedef _c_clang_tokenize = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceRange Range,
-  ffi.Pointer<ffi.Pointer<CXToken>> Tokens,
-  ffi.Pointer<ffi.Uint32> NumTokens,
-);
-
-typedef _dart_clang_tokenize = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  CXSourceRange Range,
-  ffi.Pointer<ffi.Pointer<CXToken>> Tokens,
-  ffi.Pointer<ffi.Uint32> NumTokens,
-);
-
-typedef _c_clang_annotateTokens = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  ffi.Uint32 NumTokens,
-  ffi.Pointer<CXCursor> Cursors,
-);
-
-typedef _dart_clang_annotateTokens = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  int NumTokens,
-  ffi.Pointer<CXCursor> Cursors,
-);
-
-typedef _c_clang_disposeTokens = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  ffi.Uint32 NumTokens,
-);
-
-typedef _dart_clang_disposeTokens = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<CXToken> Tokens,
-  int NumTokens,
-);
-
-typedef _c_clang_getCursorKindSpelling = CXString Function(
-  ffi.Int32 Kind,
-);
-
-typedef _dart_clang_getCursorKindSpelling = CXString Function(
-  int Kind,
-);
-
-typedef _c_clang_getDefinitionSpellingAndExtent = ffi.Void Function(
-  CXCursor arg0,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> startBuf,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> endBuf,
-  ffi.Pointer<ffi.Uint32> startLine,
-  ffi.Pointer<ffi.Uint32> startColumn,
-  ffi.Pointer<ffi.Uint32> endLine,
-  ffi.Pointer<ffi.Uint32> endColumn,
-);
-
-typedef _dart_clang_getDefinitionSpellingAndExtent = void Function(
-  CXCursor arg0,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> startBuf,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> endBuf,
-  ffi.Pointer<ffi.Uint32> startLine,
-  ffi.Pointer<ffi.Uint32> startColumn,
-  ffi.Pointer<ffi.Uint32> endLine,
-  ffi.Pointer<ffi.Uint32> endColumn,
-);
-
-typedef _c_clang_enableStackTraces = ffi.Void Function();
-
-typedef _dart_clang_enableStackTraces = void Function();
-
-typedef _typedefC_1 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_clang_executeOnThread = ffi.Void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
-  ffi.Pointer<ffi.Void> user_data,
-  ffi.Uint32 stack_size,
-);
-
-typedef _dart_clang_executeOnThread = void Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
-  ffi.Pointer<ffi.Void> user_data,
-  int stack_size,
-);
-
-typedef _c_clang_getCompletionChunkKind = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkKind = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int chunk_number,
-);
-
-typedef _c_clang_getCompletionChunkText = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkText = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int chunk_number,
-);
-
-typedef _c_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
-    Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
-    Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int chunk_number,
-);
-
-typedef _c_clang_getNumCompletionChunks = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getNumCompletionChunks = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _c_clang_getCompletionPriority = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionPriority = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _c_clang_getCompletionAvailability = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionAvailability = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _c_clang_getCompletionNumAnnotations = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionNumAnnotations = int Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _c_clang_getCompletionAnnotation = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Uint32 annotation_number,
-);
-
-typedef _dart_clang_getCompletionAnnotation = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  int annotation_number,
-);
-
-typedef _c_clang_getCompletionParent = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Pointer<ffi.Int32> kind,
-);
-
-typedef _dart_clang_getCompletionParent = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-  ffi.Pointer<ffi.Int32> kind,
-);
-
-typedef _c_clang_getCompletionBriefComment = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionBriefComment = CXString Function(
-  ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _c_clang_getCursorCompletionString = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef _dart_clang_getCursorCompletionString = ffi.Pointer<ffi.Void> Function(
-  CXCursor cursor,
-);
-
-typedef _c_clang_getCompletionNumFixIts = ffi.Uint32 Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  ffi.Uint32 completion_index,
-);
-
-typedef _dart_clang_getCompletionNumFixIts = int Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  int completion_index,
-);
-
-typedef _c_clang_getCompletionFixIt = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  ffi.Uint32 completion_index,
-  ffi.Uint32 fixit_index,
-  ffi.Pointer<CXSourceRange> replacement_range,
-);
-
-typedef _dart_clang_getCompletionFixIt = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> results,
-  int completion_index,
-  int fixit_index,
-  ffi.Pointer<CXSourceRange> replacement_range,
-);
-
-typedef _c_clang_defaultCodeCompleteOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultCodeCompleteOptions = int Function();
-
-typedef _c_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults> Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> complete_filename,
-  ffi.Uint32 complete_line,
-  ffi.Uint32 complete_column,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Uint32 options,
-);
-
-typedef _dart_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults>
-    Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Int8> complete_filename,
-  int complete_line,
-  int complete_column,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  int options,
-);
-
-typedef _c_clang_sortCodeCompletionResults = ffi.Void Function(
-  ffi.Pointer<CXCompletionResult> Results,
-  ffi.Uint32 NumResults,
-);
-
-typedef _dart_clang_sortCodeCompletionResults = void Function(
-  ffi.Pointer<CXCompletionResult> Results,
-  int NumResults,
-);
-
-typedef _c_clang_disposeCodeCompleteResults = ffi.Void Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_disposeCodeCompleteResults = void Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _c_clang_codeCompleteGetNumDiagnostics = ffi.Uint32 Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetNumDiagnostics = int Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _c_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  ffi.Uint32 Index,
-);
-
-typedef _dart_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  int Index,
-);
-
-typedef _c_clang_codeCompleteGetContexts = ffi.Uint64 Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetContexts = int Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _c_clang_codeCompleteGetContainerKind = ffi.Int32 Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  ffi.Pointer<ffi.Uint32> IsIncomplete,
-);
-
-typedef _dart_clang_codeCompleteGetContainerKind = int Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-  ffi.Pointer<ffi.Uint32> IsIncomplete,
-);
-
-typedef _c_clang_codeCompleteGetContainerUSR = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetContainerUSR = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _c_clang_codeCompleteGetObjCSelector = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetObjCSelector = CXString Function(
-  ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _c_clang_getClangVersion = CXString Function();
-
-typedef _dart_clang_getClangVersion = CXString Function();
-
-typedef _c_clang_toggleCrashRecovery = ffi.Void Function(
-  ffi.Uint32 isEnabled,
-);
-
-typedef _dart_clang_toggleCrashRecovery = void Function(
-  int isEnabled,
-);
-
-typedef CXInclusionVisitor = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXSourceLocation>,
-  ffi.Uint32,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_clang_getInclusions = ffi.Void Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_getInclusions = void Function(
-  ffi.Pointer<CXTranslationUnitImpl> tu,
-  ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _c_clang_Cursor_Evaluate = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _dart_clang_Cursor_Evaluate = ffi.Pointer<ffi.Void> Function(
-  CXCursor C,
-);
-
-typedef _c_clang_EvalResult_getKind = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getKind = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsInt = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsInt = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsLongLong = ffi.Int64 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsLongLong = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_isUnsignedInt = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_isUnsignedInt = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsUnsigned = ffi.Uint64 Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsUnsigned = int Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsDouble = ffi.Double Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsDouble = double Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_EvalResult_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_dispose = void Function(
-  ffi.Pointer<ffi.Void> E,
-);
-
-typedef _c_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> path,
-);
-
-typedef _dart_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Int8> path,
-);
-
-typedef _c_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
-  ffi.Uint32 numFiles,
-);
-
-typedef _dart_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
-  int numFiles,
-);
-
-typedef _c_clang_remap_getNumFiles = ffi.Uint32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_remap_getNumFiles = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_remap_getFilenames = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Uint32 index,
-  ffi.Pointer<CXString> original,
-  ffi.Pointer<CXString> transformed,
-);
-
-typedef _dart_clang_remap_getFilenames = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-  int index,
-  ffi.Pointer<CXString> original,
-  ffi.Pointer<CXString> transformed,
-);
-
-typedef _c_clang_remap_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_remap_dispose = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_findReferencesInFile = ffi.Int32 Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef _dart_clang_findReferencesInFile = int Function(
-  CXCursor cursor,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef _c_clang_findIncludesInFile = ffi.Int32 Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef _dart_clang_findIncludesInFile = int Function(
-  ffi.Pointer<CXTranslationUnitImpl> TU,
-  ffi.Pointer<ffi.Void> file,
-  CXCursorAndRangeVisitor visitor,
-);
-
-typedef _c_clang_index_isEntityObjCContainerKind = ffi.Int32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_clang_index_isEntityObjCContainerKind = int Function(
-  int arg0,
-);
-
-typedef _c_clang_index_getObjCContainerDeclInfo
-    = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCContainerDeclInfo
-    = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _c_clang_index_getObjCInterfaceDeclInfo
-    = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCInterfaceDeclInfo
-    = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _c_clang_index_getObjCCategoryDeclInfo
-    = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCCategoryDeclInfo
-    = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _c_clang_index_getObjCProtocolRefListInfo
-    = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCProtocolRefListInfo
-    = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _c_clang_index_getObjCPropertyDeclInfo
-    = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCPropertyDeclInfo
-    = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _c_clang_index_getIBOutletCollectionAttrInfo
-    = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
-  ffi.Pointer<CXIdxAttrInfo> arg0,
-);
-
-typedef _dart_clang_index_getIBOutletCollectionAttrInfo
-    = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
-  ffi.Pointer<CXIdxAttrInfo> arg0,
-);
-
-typedef _c_clang_index_getCXXClassDeclInfo = ffi.Pointer<CXIdxCXXClassDeclInfo>
-    Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getCXXClassDeclInfo
-    = ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
-  ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _c_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-);
-
-typedef _dart_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-);
-
-typedef _c_clang_index_setClientContainer = ffi.Void Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_index_setClientContainer = void Function(
-  ffi.Pointer<CXIdxContainerInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _c_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-);
-
-typedef _dart_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-);
-
-typedef _c_clang_index_setClientEntity = ffi.Void Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_index_setClientEntity = void Function(
-  ffi.Pointer<CXIdxEntityInfo> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _c_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-);
-
-typedef _dart_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> CIdx,
-);
-
-typedef _c_clang_IndexAction_dispose = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_IndexAction_dispose = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_clang_indexSourceFile = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  ffi.Uint32 index_callbacks_size,
-  ffi.Uint32 index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  ffi.Uint32 TU_options,
-);
-
-typedef _dart_clang_indexSourceFile = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  int index_callbacks_size,
-  int index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  int TU_options,
-);
-
-typedef _c_clang_indexSourceFileFullArgv = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  ffi.Uint32 index_callbacks_size,
-  ffi.Uint32 index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  ffi.Int32 num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  ffi.Uint32 num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  ffi.Uint32 TU_options,
-);
-
-typedef _dart_clang_indexSourceFileFullArgv = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  int index_callbacks_size,
-  int index_options,
-  ffi.Pointer<ffi.Int8> source_filename,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
-  int num_command_line_args,
-  ffi.Pointer<CXUnsavedFile> unsaved_files,
-  int num_unsaved_files,
-  ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-  int TU_options,
-);
-
-typedef _c_clang_indexTranslationUnit = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  ffi.Uint32 index_callbacks_size,
-  ffi.Uint32 index_options,
-  ffi.Pointer<CXTranslationUnitImpl> arg5,
-);
-
-typedef _dart_clang_indexTranslationUnit = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Pointer<ffi.Void> client_data,
-  ffi.Pointer<IndexerCallbacks> index_callbacks,
-  int index_callbacks_size,
-  int index_options,
-  ffi.Pointer<CXTranslationUnitImpl> arg5,
-);
-
-typedef _c_clang_indexLoc_getFileLocation = ffi.Void Function(
-  CXIdxLoc loc,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> indexFile,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_indexLoc_getFileLocation = void Function(
-  CXIdxLoc loc,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> indexFile,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> file,
-  ffi.Pointer<ffi.Uint32> line,
-  ffi.Pointer<ffi.Uint32> column,
-  ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _c_clang_indexLoc_getCXSourceLocation = CXSourceLocation Function(
-  CXIdxLoc loc,
-);
-
-typedef _dart_clang_indexLoc_getCXSourceLocation = CXSourceLocation Function(
-  CXIdxLoc loc,
-);
-
-typedef CXFieldVisitor = ffi.Int32 Function(
-  CXCursor,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_clang_Type_visitFields = ffi.Uint32 Function(
-  CXType T,
-  ffi.Pointer<ffi.NativeFunction<CXFieldVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_Type_visitFields = int Function(
-  CXType T,
-  ffi.Pointer<ffi.NativeFunction<CXFieldVisitor>> visitor,
-  ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _typedefC_2 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  CXCursor,
-  CXSourceRange,
-);
-
-typedef _typedefC_3 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_4 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_5 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_6 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxIncludedFileInfo>,
-);
-
-typedef _typedefC_7 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxImportedASTFileInfo>,
-);
-
-typedef _typedefC_8 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_9 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxDeclInfo>,
-);
-
-typedef _typedefC_10 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<CXIdxEntityRefInfo>,
-);
diff --git a/test/large_integration_tests/_expected_sqlite_bindings.dart b/test/large_integration_tests/_expected_sqlite_bindings.dart
index 9580bd1..b8b13ed 100644
--- a/test/large_integration_tests/_expected_sqlite_bindings.dart
+++ b/test/large_integration_tests/_expected_sqlite_bindings.dart
@@ -61,29 +61,30 @@
   }
 
   late final _sqlite3_libversion_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_libversion>>('sqlite3_libversion');
-  late final _dart_sqlite3_libversion _sqlite3_libversion =
-      _sqlite3_libversion_ptr.asFunction<_dart_sqlite3_libversion>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function()>>(
+          'sqlite3_libversion');
+  late final _sqlite3_libversion =
+      _sqlite3_libversion_ptr.asFunction<ffi.Pointer<ffi.Int8> Function()>();
 
   ffi.Pointer<ffi.Int8> sqlite3_sourceid() {
     return _sqlite3_sourceid();
   }
 
   late final _sqlite3_sourceid_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_sourceid>>('sqlite3_sourceid');
-  late final _dart_sqlite3_sourceid _sqlite3_sourceid =
-      _sqlite3_sourceid_ptr.asFunction<_dart_sqlite3_sourceid>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function()>>(
+          'sqlite3_sourceid');
+  late final _sqlite3_sourceid =
+      _sqlite3_sourceid_ptr.asFunction<ffi.Pointer<ffi.Int8> Function()>();
 
   int sqlite3_libversion_number() {
     return _sqlite3_libversion_number();
   }
 
   late final _sqlite3_libversion_number_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_libversion_number>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>(
           'sqlite3_libversion_number');
-  late final _dart_sqlite3_libversion_number _sqlite3_libversion_number =
-      _sqlite3_libversion_number_ptr
-          .asFunction<_dart_sqlite3_libversion_number>();
+  late final _sqlite3_libversion_number =
+      _sqlite3_libversion_number_ptr.asFunction<int Function()>();
 
   int sqlite3_compileoption_used(
     ffi.Pointer<ffi.Int8> zOptName,
@@ -94,11 +95,10 @@
   }
 
   late final _sqlite3_compileoption_used_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_compileoption_used>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Int8>)>>(
           'sqlite3_compileoption_used');
-  late final _dart_sqlite3_compileoption_used _sqlite3_compileoption_used =
-      _sqlite3_compileoption_used_ptr
-          .asFunction<_dart_sqlite3_compileoption_used>();
+  late final _sqlite3_compileoption_used = _sqlite3_compileoption_used_ptr
+      .asFunction<int Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_compileoption_get(
     int N,
@@ -109,11 +109,10 @@
   }
 
   late final _sqlite3_compileoption_get_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_compileoption_get>>(
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(ffi.Int32)>>(
           'sqlite3_compileoption_get');
-  late final _dart_sqlite3_compileoption_get _sqlite3_compileoption_get =
-      _sqlite3_compileoption_get_ptr
-          .asFunction<_dart_sqlite3_compileoption_get>();
+  late final _sqlite3_compileoption_get = _sqlite3_compileoption_get_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(int)>();
 
   /// CAPI3REF: Test To See If The Library Is Threadsafe
   ///
@@ -154,9 +153,9 @@
   }
 
   late final _sqlite3_threadsafe_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_threadsafe>>('sqlite3_threadsafe');
-  late final _dart_sqlite3_threadsafe _sqlite3_threadsafe =
-      _sqlite3_threadsafe_ptr.asFunction<_dart_sqlite3_threadsafe>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>('sqlite3_threadsafe');
+  late final _sqlite3_threadsafe =
+      _sqlite3_threadsafe_ptr.asFunction<int Function()>();
 
   /// CAPI3REF: Closing A Database Connection
   /// DESTRUCTOR: sqlite3
@@ -203,9 +202,10 @@
   }
 
   late final _sqlite3_close_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_close>>('sqlite3_close');
-  late final _dart_sqlite3_close _sqlite3_close =
-      _sqlite3_close_ptr.asFunction<_dart_sqlite3_close>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
+          'sqlite3_close');
+  late final _sqlite3_close =
+      _sqlite3_close_ptr.asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   int sqlite3_close_v2(
     ffi.Pointer<sqlite3> arg0,
@@ -216,9 +216,10 @@
   }
 
   late final _sqlite3_close_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_close_v2>>('sqlite3_close_v2');
-  late final _dart_sqlite3_close_v2 _sqlite3_close_v2 =
-      _sqlite3_close_v2_ptr.asFunction<_dart_sqlite3_close_v2>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
+          'sqlite3_close_v2');
+  late final _sqlite3_close_v2 =
+      _sqlite3_close_v2_ptr.asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: One-Step Query Execution Interface
   /// METHOD: sqlite3
@@ -283,7 +284,14 @@
   int sqlite3_exec(
     ffi.Pointer<sqlite3> arg0,
     ffi.Pointer<ffi.Int8> sql,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_1>> callback,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(
+                    ffi.Pointer<ffi.Void>,
+                    ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                    ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>
+        callback,
     ffi.Pointer<ffi.Void> arg3,
     ffi.Pointer<ffi.Pointer<ffi.Int8>> errmsg,
   ) {
@@ -296,10 +304,33 @@
     );
   }
 
-  late final _sqlite3_exec_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_exec>>('sqlite3_exec');
-  late final _dart_sqlite3_exec _sqlite3_exec =
-      _sqlite3_exec_ptr.asFunction<_dart_sqlite3_exec>();
+  late final _sqlite3_exec_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                          ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_exec');
+  late final _sqlite3_exec = _sqlite3_exec_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Int32,
+                      ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+                      ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>,
+          ffi.Pointer<ffi.Void>,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   /// CAPI3REF: Initialize The SQLite Library
   ///
@@ -379,36 +410,35 @@
   }
 
   late final _sqlite3_initialize_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_initialize>>('sqlite3_initialize');
-  late final _dart_sqlite3_initialize _sqlite3_initialize =
-      _sqlite3_initialize_ptr.asFunction<_dart_sqlite3_initialize>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>('sqlite3_initialize');
+  late final _sqlite3_initialize =
+      _sqlite3_initialize_ptr.asFunction<int Function()>();
 
   int sqlite3_shutdown() {
     return _sqlite3_shutdown();
   }
 
   late final _sqlite3_shutdown_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_shutdown>>('sqlite3_shutdown');
-  late final _dart_sqlite3_shutdown _sqlite3_shutdown =
-      _sqlite3_shutdown_ptr.asFunction<_dart_sqlite3_shutdown>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>('sqlite3_shutdown');
+  late final _sqlite3_shutdown =
+      _sqlite3_shutdown_ptr.asFunction<int Function()>();
 
   int sqlite3_os_init() {
     return _sqlite3_os_init();
   }
 
   late final _sqlite3_os_init_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_os_init>>('sqlite3_os_init');
-  late final _dart_sqlite3_os_init _sqlite3_os_init =
-      _sqlite3_os_init_ptr.asFunction<_dart_sqlite3_os_init>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>('sqlite3_os_init');
+  late final _sqlite3_os_init =
+      _sqlite3_os_init_ptr.asFunction<int Function()>();
 
   int sqlite3_os_end() {
     return _sqlite3_os_end();
   }
 
   late final _sqlite3_os_end_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_os_end>>('sqlite3_os_end');
-  late final _dart_sqlite3_os_end _sqlite3_os_end =
-      _sqlite3_os_end_ptr.asFunction<_dart_sqlite3_os_end>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>('sqlite3_os_end');
+  late final _sqlite3_os_end = _sqlite3_os_end_ptr.asFunction<int Function()>();
 
   /// CAPI3REF: Configuring The SQLite Library
   ///
@@ -448,9 +478,10 @@
   }
 
   late final _sqlite3_config_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_config>>('sqlite3_config');
-  late final _dart_sqlite3_config _sqlite3_config =
-      _sqlite3_config_ptr.asFunction<_dart_sqlite3_config>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>(
+          'sqlite3_config');
+  late final _sqlite3_config =
+      _sqlite3_config_ptr.asFunction<int Function(int)>();
 
   /// CAPI3REF: Configure database connections
   /// METHOD: sqlite3
@@ -477,10 +508,12 @@
     );
   }
 
-  late final _sqlite3_db_config_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_config>>('sqlite3_db_config');
-  late final _dart_sqlite3_db_config _sqlite3_db_config =
-      _sqlite3_db_config_ptr.asFunction<_dart_sqlite3_db_config>();
+  late final _sqlite3_db_config_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>, ffi.Int32)>>('sqlite3_db_config');
+  late final _sqlite3_db_config = _sqlite3_db_config_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, int)>();
 
   /// CAPI3REF: Enable Or Disable Extended Result Codes
   /// METHOD: sqlite3
@@ -498,12 +531,12 @@
     );
   }
 
-  late final _sqlite3_extended_result_codes_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_extended_result_codes>>(
-          'sqlite3_extended_result_codes');
-  late final _dart_sqlite3_extended_result_codes
-      _sqlite3_extended_result_codes = _sqlite3_extended_result_codes_ptr
-          .asFunction<_dart_sqlite3_extended_result_codes>();
+  late final _sqlite3_extended_result_codes_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>,
+              ffi.Int32)>>('sqlite3_extended_result_codes');
+  late final _sqlite3_extended_result_codes = _sqlite3_extended_result_codes_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, int)>();
 
   /// CAPI3REF: Last Insert Rowid
   /// METHOD: sqlite3
@@ -572,11 +605,10 @@
   }
 
   late final _sqlite3_last_insert_rowid_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_last_insert_rowid>>(
+      _lookup<ffi.NativeFunction<sqlite3_int64 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_last_insert_rowid');
-  late final _dart_sqlite3_last_insert_rowid _sqlite3_last_insert_rowid =
-      _sqlite3_last_insert_rowid_ptr
-          .asFunction<_dart_sqlite3_last_insert_rowid>();
+  late final _sqlite3_last_insert_rowid = _sqlite3_last_insert_rowid_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Set the Last Insert Rowid value.
   /// METHOD: sqlite3
@@ -594,12 +626,12 @@
     );
   }
 
-  late final _sqlite3_set_last_insert_rowid_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_set_last_insert_rowid>>(
-          'sqlite3_set_last_insert_rowid');
-  late final _dart_sqlite3_set_last_insert_rowid
-      _sqlite3_set_last_insert_rowid = _sqlite3_set_last_insert_rowid_ptr
-          .asFunction<_dart_sqlite3_set_last_insert_rowid>();
+  late final _sqlite3_set_last_insert_rowid_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3>,
+              sqlite3_int64)>>('sqlite3_set_last_insert_rowid');
+  late final _sqlite3_set_last_insert_rowid = _sqlite3_set_last_insert_rowid_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3>, int)>();
 
   /// CAPI3REF: Count The Number Of Rows Modified
   /// METHOD: sqlite3
@@ -664,9 +696,10 @@
   }
 
   late final _sqlite3_changes_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_changes>>('sqlite3_changes');
-  late final _dart_sqlite3_changes _sqlite3_changes =
-      _sqlite3_changes_ptr.asFunction<_dart_sqlite3_changes>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
+          'sqlite3_changes');
+  late final _sqlite3_changes =
+      _sqlite3_changes_ptr.asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Total Number Of Rows Modified
   /// METHOD: sqlite3
@@ -710,10 +743,10 @@
   }
 
   late final _sqlite3_total_changes_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_total_changes>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_total_changes');
-  late final _dart_sqlite3_total_changes _sqlite3_total_changes =
-      _sqlite3_total_changes_ptr.asFunction<_dart_sqlite3_total_changes>();
+  late final _sqlite3_total_changes = _sqlite3_total_changes_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Interrupt A Long-Running Query
   /// METHOD: sqlite3
@@ -757,9 +790,10 @@
   }
 
   late final _sqlite3_interrupt_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_interrupt>>('sqlite3_interrupt');
-  late final _dart_sqlite3_interrupt _sqlite3_interrupt =
-      _sqlite3_interrupt_ptr.asFunction<_dart_sqlite3_interrupt>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3>)>>(
+          'sqlite3_interrupt');
+  late final _sqlite3_interrupt =
+      _sqlite3_interrupt_ptr.asFunction<void Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Determine If An SQL Statement Is Complete
   ///
@@ -801,9 +835,10 @@
   }
 
   late final _sqlite3_complete_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_complete>>('sqlite3_complete');
-  late final _dart_sqlite3_complete _sqlite3_complete =
-      _sqlite3_complete_ptr.asFunction<_dart_sqlite3_complete>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Int8>)>>(
+          'sqlite3_complete');
+  late final _sqlite3_complete =
+      _sqlite3_complete_ptr.asFunction<int Function(ffi.Pointer<ffi.Int8>)>();
 
   int sqlite3_complete16(
     ffi.Pointer<ffi.Void> sql,
@@ -814,9 +849,10 @@
   }
 
   late final _sqlite3_complete16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_complete16>>('sqlite3_complete16');
-  late final _dart_sqlite3_complete16 _sqlite3_complete16 =
-      _sqlite3_complete16_ptr.asFunction<_dart_sqlite3_complete16>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>>(
+          'sqlite3_complete16');
+  late final _sqlite3_complete16 =
+      _sqlite3_complete16_ptr.asFunction<int Function(ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
   /// KEYWORDS: {busy-handler callback} {busy handler}
@@ -877,7 +913,10 @@
   /// or [prepared statement] that invoked the busy handler.
   int sqlite3_busy_handler(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_44>> arg1,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(ffi.Pointer<ffi.Void>, ffi.Int32)>>
+        arg1,
     ffi.Pointer<ffi.Void> arg2,
   ) {
     return _sqlite3_busy_handler(
@@ -887,11 +926,21 @@
     );
   }
 
-  late final _sqlite3_busy_handler_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_busy_handler>>(
-          'sqlite3_busy_handler');
-  late final _dart_sqlite3_busy_handler _sqlite3_busy_handler =
-      _sqlite3_busy_handler_ptr.asFunction<_dart_sqlite3_busy_handler>();
+  late final _sqlite3_busy_handler_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(ffi.Pointer<ffi.Void>, ffi.Int32)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_busy_handler');
+  late final _sqlite3_busy_handler = _sqlite3_busy_handler_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(ffi.Pointer<ffi.Void>, ffi.Int32)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Set A Busy Timeout
   /// METHOD: sqlite3
@@ -922,11 +971,12 @@
     );
   }
 
-  late final _sqlite3_busy_timeout_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_busy_timeout>>(
-          'sqlite3_busy_timeout');
-  late final _dart_sqlite3_busy_timeout _sqlite3_busy_timeout =
-      _sqlite3_busy_timeout_ptr.asFunction<_dart_sqlite3_busy_timeout>();
+  late final _sqlite3_busy_timeout_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>, ffi.Int32)>>('sqlite3_busy_timeout');
+  late final _sqlite3_busy_timeout = _sqlite3_busy_timeout_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, int)>();
 
   /// CAPI3REF: Convenience Routines For Running Queries
   /// METHOD: sqlite3
@@ -1017,10 +1067,23 @@
     );
   }
 
-  late final _sqlite3_get_table_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_get_table>>('sqlite3_get_table');
-  late final _dart_sqlite3_get_table _sqlite3_get_table =
-      _sqlite3_get_table_ptr.asFunction<_dart_sqlite3_get_table>();
+  late final _sqlite3_get_table_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Int8>>>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_get_table');
+  late final _sqlite3_get_table = _sqlite3_get_table_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Int8>>>,
+          ffi.Pointer<ffi.Int32>,
+          ffi.Pointer<ffi.Int32>,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   void sqlite3_free_table(
     ffi.Pointer<ffi.Pointer<ffi.Int8>> result,
@@ -1030,10 +1093,12 @@
     );
   }
 
-  late final _sqlite3_free_table_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_free_table>>('sqlite3_free_table');
-  late final _dart_sqlite3_free_table _sqlite3_free_table =
-      _sqlite3_free_table_ptr.asFunction<_dart_sqlite3_free_table>();
+  late final _sqlite3_free_table_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_free_table');
+  late final _sqlite3_free_table = _sqlite3_free_table_ptr
+      .asFunction<void Function(ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   /// CAPI3REF: Formatted String Printing Functions
   ///
@@ -1081,10 +1146,12 @@
     );
   }
 
-  late final _sqlite3_mprintf_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mprintf>>('sqlite3_mprintf');
-  late final _dart_sqlite3_mprintf _sqlite3_mprintf =
-      _sqlite3_mprintf_ptr.asFunction<_dart_sqlite3_mprintf>();
+  late final _sqlite3_mprintf_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_mprintf');
+  late final _sqlite3_mprintf = _sqlite3_mprintf_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_snprintf(
     int arg0,
@@ -1098,10 +1165,13 @@
     );
   }
 
-  late final _sqlite3_snprintf_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_snprintf>>('sqlite3_snprintf');
-  late final _dart_sqlite3_snprintf _sqlite3_snprintf =
-      _sqlite3_snprintf_ptr.asFunction<_dart_sqlite3_snprintf>();
+  late final _sqlite3_snprintf_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Int32, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_snprintf');
+  late final _sqlite3_snprintf = _sqlite3_snprintf_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(
+          int, ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Memory Allocation Subsystem
   ///
@@ -1185,9 +1255,10 @@
   }
 
   late final _sqlite3_malloc_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_malloc>>('sqlite3_malloc');
-  late final _dart_sqlite3_malloc _sqlite3_malloc =
-      _sqlite3_malloc_ptr.asFunction<_dart_sqlite3_malloc>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.Int32)>>(
+          'sqlite3_malloc');
+  late final _sqlite3_malloc =
+      _sqlite3_malloc_ptr.asFunction<ffi.Pointer<ffi.Void> Function(int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_malloc64(
     int arg0,
@@ -1197,10 +1268,11 @@
     );
   }
 
-  late final _sqlite3_malloc64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_malloc64>>('sqlite3_malloc64');
-  late final _dart_sqlite3_malloc64 _sqlite3_malloc64 =
-      _sqlite3_malloc64_ptr.asFunction<_dart_sqlite3_malloc64>();
+  late final _sqlite3_malloc64_ptr = _lookup<
+          ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(sqlite3_uint64)>>(
+      'sqlite3_malloc64');
+  late final _sqlite3_malloc64 =
+      _sqlite3_malloc64_ptr.asFunction<ffi.Pointer<ffi.Void> Function(int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_realloc(
     ffi.Pointer<ffi.Void> arg0,
@@ -1212,10 +1284,12 @@
     );
   }
 
-  late final _sqlite3_realloc_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_realloc>>('sqlite3_realloc');
-  late final _dart_sqlite3_realloc _sqlite3_realloc =
-      _sqlite3_realloc_ptr.asFunction<_dart_sqlite3_realloc>();
+  late final _sqlite3_realloc_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<ffi.Void>, ffi.Int32)>>('sqlite3_realloc');
+  late final _sqlite3_realloc = _sqlite3_realloc_ptr
+      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<ffi.Void>, int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_realloc64(
     ffi.Pointer<ffi.Void> arg0,
@@ -1227,10 +1301,12 @@
     );
   }
 
-  late final _sqlite3_realloc64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_realloc64>>('sqlite3_realloc64');
-  late final _dart_sqlite3_realloc64 _sqlite3_realloc64 =
-      _sqlite3_realloc64_ptr.asFunction<_dart_sqlite3_realloc64>();
+  late final _sqlite3_realloc64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<ffi.Void>, sqlite3_uint64)>>('sqlite3_realloc64');
+  late final _sqlite3_realloc64 = _sqlite3_realloc64_ptr
+      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<ffi.Void>, int)>();
 
   void sqlite3_free(
     ffi.Pointer<ffi.Void> arg0,
@@ -1241,9 +1317,10 @@
   }
 
   late final _sqlite3_free_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_free>>('sqlite3_free');
-  late final _dart_sqlite3_free _sqlite3_free =
-      _sqlite3_free_ptr.asFunction<_dart_sqlite3_free>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
+          'sqlite3_free');
+  late final _sqlite3_free =
+      _sqlite3_free_ptr.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
 
   int sqlite3_msize(
     ffi.Pointer<ffi.Void> arg0,
@@ -1253,10 +1330,11 @@
     );
   }
 
-  late final _sqlite3_msize_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_msize>>('sqlite3_msize');
-  late final _dart_sqlite3_msize _sqlite3_msize =
-      _sqlite3_msize_ptr.asFunction<_dart_sqlite3_msize>();
+  late final _sqlite3_msize_ptr = _lookup<
+          ffi.NativeFunction<sqlite3_uint64 Function(ffi.Pointer<ffi.Void>)>>(
+      'sqlite3_msize');
+  late final _sqlite3_msize =
+      _sqlite3_msize_ptr.asFunction<int Function(ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Memory Allocator Statistics
   ///
@@ -1284,10 +1362,10 @@
   }
 
   late final _sqlite3_memory_used_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_memory_used>>(
+      _lookup<ffi.NativeFunction<sqlite3_int64 Function()>>(
           'sqlite3_memory_used');
-  late final _dart_sqlite3_memory_used _sqlite3_memory_used =
-      _sqlite3_memory_used_ptr.asFunction<_dart_sqlite3_memory_used>();
+  late final _sqlite3_memory_used =
+      _sqlite3_memory_used_ptr.asFunction<int Function()>();
 
   int sqlite3_memory_highwater(
     int resetFlag,
@@ -1298,11 +1376,10 @@
   }
 
   late final _sqlite3_memory_highwater_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_memory_highwater>>(
+      _lookup<ffi.NativeFunction<sqlite3_int64 Function(ffi.Int32)>>(
           'sqlite3_memory_highwater');
-  late final _dart_sqlite3_memory_highwater _sqlite3_memory_highwater =
-      _sqlite3_memory_highwater_ptr
-          .asFunction<_dart_sqlite3_memory_highwater>();
+  late final _sqlite3_memory_highwater =
+      _sqlite3_memory_highwater_ptr.asFunction<int Function(int)>();
 
   /// CAPI3REF: Pseudo-Random Number Generator
   ///
@@ -1333,10 +1410,12 @@
     );
   }
 
-  late final _sqlite3_randomness_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_randomness>>('sqlite3_randomness');
-  late final _dart_sqlite3_randomness _sqlite3_randomness =
-      _sqlite3_randomness_ptr.asFunction<_dart_sqlite3_randomness>();
+  late final _sqlite3_randomness_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Int32, ffi.Pointer<ffi.Void>)>>('sqlite3_randomness');
+  late final _sqlite3_randomness = _sqlite3_randomness_ptr
+      .asFunction<void Function(int, ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Compile-Time Authorization Callbacks
   /// METHOD: sqlite3
@@ -1427,7 +1506,16 @@
   /// sqlite3_prepare_v2() to reprepare a statement after a schema change.
   int sqlite3_set_authorizer(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_45>> xAuth,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(
+                    ffi.Pointer<ffi.Void>,
+                    ffi.Int32,
+                    ffi.Pointer<ffi.Int8>,
+                    ffi.Pointer<ffi.Int8>,
+                    ffi.Pointer<ffi.Int8>,
+                    ffi.Pointer<ffi.Int8>)>>
+        xAuth,
     ffi.Pointer<ffi.Void> pUserData,
   ) {
     return _sqlite3_set_authorizer(
@@ -1437,11 +1525,33 @@
     );
   }
 
-  late final _sqlite3_set_authorizer_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_set_authorizer>>(
-          'sqlite3_set_authorizer');
-  late final _dart_sqlite3_set_authorizer _sqlite3_set_authorizer =
-      _sqlite3_set_authorizer_ptr.asFunction<_dart_sqlite3_set_authorizer>();
+  late final _sqlite3_set_authorizer_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Int8>,
+                          ffi.Pointer<ffi.Int8>,
+                          ffi.Pointer<ffi.Int8>,
+                          ffi.Pointer<ffi.Int8>)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_set_authorizer');
+  late final _sqlite3_set_authorizer = _sqlite3_set_authorizer_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Int32,
+                      ffi.Pointer<ffi.Int8>,
+                      ffi.Pointer<ffi.Int8>,
+                      ffi.Pointer<ffi.Int8>,
+                      ffi.Pointer<ffi.Int8>)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Tracing And Profiling Functions
   /// METHOD: sqlite3
@@ -1475,7 +1585,11 @@
   /// profile callback.
   ffi.Pointer<ffi.Void> sqlite3_trace(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_46>> xTrace,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(
+                    ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Int8>)>>
+        xTrace,
     ffi.Pointer<ffi.Void> arg2,
   ) {
     return _sqlite3_trace(
@@ -1485,14 +1599,31 @@
     );
   }
 
-  late final _sqlite3_trace_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_trace>>('sqlite3_trace');
-  late final _dart_sqlite3_trace _sqlite3_trace =
-      _sqlite3_trace_ptr.asFunction<_dart_sqlite3_trace>();
+  late final _sqlite3_trace_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Int8>)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_trace');
+  late final _sqlite3_trace = _sqlite3_trace_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Int8>)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   ffi.Pointer<ffi.Void> sqlite3_profile(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_47>> xProfile,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Int8>,
+                    sqlite3_uint64)>>
+        xProfile,
     ffi.Pointer<ffi.Void> arg2,
   ) {
     return _sqlite3_profile(
@@ -1502,10 +1633,23 @@
     );
   }
 
-  late final _sqlite3_profile_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_profile>>('sqlite3_profile');
-  late final _dart_sqlite3_profile _sqlite3_profile =
-      _sqlite3_profile_ptr.asFunction<_dart_sqlite3_profile>();
+  late final _sqlite3_profile_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<ffi.Void>,
+                          ffi.Pointer<ffi.Int8>, sqlite3_uint64)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_profile');
+  late final _sqlite3_profile = _sqlite3_profile_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<ffi.Void>,
+                      ffi.Pointer<ffi.Int8>, sqlite3_uint64)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: SQL Trace Hook
   /// METHOD: sqlite3
@@ -1537,7 +1681,11 @@
   int sqlite3_trace_v2(
     ffi.Pointer<sqlite3> arg0,
     int uMask,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_48>> xCallback,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(ffi.Uint32, ffi.Pointer<ffi.Void>,
+                    ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>)>>
+        xCallback,
     ffi.Pointer<ffi.Void> pCtx,
   ) {
     return _sqlite3_trace_v2(
@@ -1548,10 +1696,25 @@
     );
   }
 
-  late final _sqlite3_trace_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_trace_v2>>('sqlite3_trace_v2');
-  late final _dart_sqlite3_trace_v2 _sqlite3_trace_v2 =
-      _sqlite3_trace_v2_ptr.asFunction<_dart_sqlite3_trace_v2>();
+  late final _sqlite3_trace_v2_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Uint32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(ffi.Uint32, ffi.Pointer<ffi.Void>,
+                          ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_trace_v2');
+  late final _sqlite3_trace_v2 = _sqlite3_trace_v2_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(ffi.Uint32, ffi.Pointer<ffi.Void>,
+                      ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Query Progress Callbacks
   /// METHOD: sqlite3
@@ -1585,7 +1748,8 @@
   void sqlite3_progress_handler(
     ffi.Pointer<sqlite3> arg0,
     int arg1,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_49>> arg2,
+    ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>>
+        arg2,
     ffi.Pointer<ffi.Void> arg3,
   ) {
     return _sqlite3_progress_handler(
@@ -1596,12 +1760,24 @@
     );
   }
 
-  late final _sqlite3_progress_handler_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_progress_handler>>(
-          'sqlite3_progress_handler');
-  late final _dart_sqlite3_progress_handler _sqlite3_progress_handler =
-      _sqlite3_progress_handler_ptr
-          .asFunction<_dart_sqlite3_progress_handler>();
+  late final _sqlite3_progress_handler_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(ffi.Pointer<ffi.Void>)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_progress_handler');
+  late final _sqlite3_progress_handler =
+      _sqlite3_progress_handler_ptr.asFunction<
+          void Function(
+              ffi.Pointer<sqlite3>,
+              int,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(ffi.Pointer<ffi.Void>)>>,
+              ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Opening A New Database Connection
   /// CONSTRUCTOR: sqlite3
@@ -1864,10 +2040,12 @@
     );
   }
 
-  late final _sqlite3_open_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_open>>('sqlite3_open');
-  late final _dart_sqlite3_open _sqlite3_open =
-      _sqlite3_open_ptr.asFunction<_dart_sqlite3_open>();
+  late final _sqlite3_open_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<sqlite3>>)>>('sqlite3_open');
+  late final _sqlite3_open = _sqlite3_open_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Pointer<sqlite3>>)>();
 
   int sqlite3_open16(
     ffi.Pointer<ffi.Void> filename,
@@ -1879,10 +2057,12 @@
     );
   }
 
-  late final _sqlite3_open16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_open16>>('sqlite3_open16');
-  late final _dart_sqlite3_open16 _sqlite3_open16 =
-      _sqlite3_open16_ptr.asFunction<_dart_sqlite3_open16>();
+  late final _sqlite3_open16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Void>,
+              ffi.Pointer<ffi.Pointer<sqlite3>>)>>('sqlite3_open16');
+  late final _sqlite3_open16 = _sqlite3_open16_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Pointer<sqlite3>>)>();
 
   int sqlite3_open_v2(
     ffi.Pointer<ffi.Int8> filename,
@@ -1898,10 +2078,16 @@
     );
   }
 
-  late final _sqlite3_open_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_open_v2>>('sqlite3_open_v2');
-  late final _dart_sqlite3_open_v2 _sqlite3_open_v2 =
-      _sqlite3_open_v2_ptr.asFunction<_dart_sqlite3_open_v2>();
+  late final _sqlite3_open_v2_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<sqlite3>>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_open_v2');
+  late final _sqlite3_open_v2 = _sqlite3_open_v2_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Pointer<sqlite3>>,
+          int, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Obtain Values For URI Parameters
   ///
@@ -1977,11 +2163,13 @@
     );
   }
 
-  late final _sqlite3_uri_parameter_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_uri_parameter>>(
-          'sqlite3_uri_parameter');
-  late final _dart_sqlite3_uri_parameter _sqlite3_uri_parameter =
-      _sqlite3_uri_parameter_ptr.asFunction<_dart_sqlite3_uri_parameter>();
+  late final _sqlite3_uri_parameter_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_uri_parameter');
+  late final _sqlite3_uri_parameter = _sqlite3_uri_parameter_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(
+          ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   int sqlite3_uri_boolean(
     ffi.Pointer<ffi.Int8> zFile,
@@ -1995,11 +2183,12 @@
     );
   }
 
-  late final _sqlite3_uri_boolean_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_uri_boolean>>(
-          'sqlite3_uri_boolean');
-  late final _dart_sqlite3_uri_boolean _sqlite3_uri_boolean =
-      _sqlite3_uri_boolean_ptr.asFunction<_dart_sqlite3_uri_boolean>();
+  late final _sqlite3_uri_boolean_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32)>>('sqlite3_uri_boolean');
+  late final _sqlite3_uri_boolean = _sqlite3_uri_boolean_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>, int)>();
 
   int sqlite3_uri_int64(
     ffi.Pointer<ffi.Int8> arg0,
@@ -2013,10 +2202,12 @@
     );
   }
 
-  late final _sqlite3_uri_int64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_uri_int64>>('sqlite3_uri_int64');
-  late final _dart_sqlite3_uri_int64 _sqlite3_uri_int64 =
-      _sqlite3_uri_int64_ptr.asFunction<_dart_sqlite3_uri_int64>();
+  late final _sqlite3_uri_int64_ptr = _lookup<
+      ffi.NativeFunction<
+          sqlite3_int64 Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>,
+              sqlite3_int64)>>('sqlite3_uri_int64');
+  late final _sqlite3_uri_int64 = _sqlite3_uri_int64_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>, int)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_uri_key(
     ffi.Pointer<ffi.Int8> zFilename,
@@ -2028,10 +2219,12 @@
     );
   }
 
-  late final _sqlite3_uri_key_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_uri_key>>('sqlite3_uri_key');
-  late final _dart_sqlite3_uri_key _sqlite3_uri_key =
-      _sqlite3_uri_key_ptr.asFunction<_dart_sqlite3_uri_key>();
+  late final _sqlite3_uri_key_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<ffi.Int8>, ffi.Int32)>>('sqlite3_uri_key');
+  late final _sqlite3_uri_key = _sqlite3_uri_key_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<ffi.Int8>, int)>();
 
   /// CAPI3REF:  Translate filenames
   ///
@@ -2066,12 +2259,12 @@
     );
   }
 
-  late final _sqlite3_filename_database_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_filename_database>>(
-          'sqlite3_filename_database');
-  late final _dart_sqlite3_filename_database _sqlite3_filename_database =
-      _sqlite3_filename_database_ptr
-          .asFunction<_dart_sqlite3_filename_database>();
+  late final _sqlite3_filename_database_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_filename_database');
+  late final _sqlite3_filename_database = _sqlite3_filename_database_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_filename_journal(
     ffi.Pointer<ffi.Int8> arg0,
@@ -2081,12 +2274,12 @@
     );
   }
 
-  late final _sqlite3_filename_journal_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_filename_journal>>(
-          'sqlite3_filename_journal');
-  late final _dart_sqlite3_filename_journal _sqlite3_filename_journal =
-      _sqlite3_filename_journal_ptr
-          .asFunction<_dart_sqlite3_filename_journal>();
+  late final _sqlite3_filename_journal_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_filename_journal');
+  late final _sqlite3_filename_journal = _sqlite3_filename_journal_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_filename_wal(
     ffi.Pointer<ffi.Int8> arg0,
@@ -2096,11 +2289,12 @@
     );
   }
 
-  late final _sqlite3_filename_wal_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_filename_wal>>(
-          'sqlite3_filename_wal');
-  late final _dart_sqlite3_filename_wal _sqlite3_filename_wal =
-      _sqlite3_filename_wal_ptr.asFunction<_dart_sqlite3_filename_wal>();
+  late final _sqlite3_filename_wal_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_filename_wal');
+  late final _sqlite3_filename_wal = _sqlite3_filename_wal_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF:  Database File Corresponding To A Journal
   ///
@@ -2125,12 +2319,12 @@
     );
   }
 
-  late final _sqlite3_database_file_object_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_database_file_object>>(
-          'sqlite3_database_file_object');
-  late final _dart_sqlite3_database_file_object _sqlite3_database_file_object =
-      _sqlite3_database_file_object_ptr
-          .asFunction<_dart_sqlite3_database_file_object>();
+  late final _sqlite3_database_file_object_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_file> Function(
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_database_file_object');
+  late final _sqlite3_database_file_object = _sqlite3_database_file_object_ptr
+      .asFunction<ffi.Pointer<sqlite3_file> Function(ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Create and Destroy VFS Filenames
   ///
@@ -2191,11 +2385,21 @@
     );
   }
 
-  late final _sqlite3_create_filename_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_filename>>(
-          'sqlite3_create_filename');
-  late final _dart_sqlite3_create_filename _sqlite3_create_filename =
-      _sqlite3_create_filename_ptr.asFunction<_dart_sqlite3_create_filename>();
+  late final _sqlite3_create_filename_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_create_filename');
+  late final _sqlite3_create_filename = _sqlite3_create_filename_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   void sqlite3_free_filename(
     ffi.Pointer<ffi.Int8> arg0,
@@ -2206,10 +2410,10 @@
   }
 
   late final _sqlite3_free_filename_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_free_filename>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Int8>)>>(
           'sqlite3_free_filename');
-  late final _dart_sqlite3_free_filename _sqlite3_free_filename =
-      _sqlite3_free_filename_ptr.asFunction<_dart_sqlite3_free_filename>();
+  late final _sqlite3_free_filename = _sqlite3_free_filename_ptr
+      .asFunction<void Function(ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Error Codes And Messages
   /// METHOD: sqlite3
@@ -2270,9 +2474,10 @@
   }
 
   late final _sqlite3_errcode_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_errcode>>('sqlite3_errcode');
-  late final _dart_sqlite3_errcode _sqlite3_errcode =
-      _sqlite3_errcode_ptr.asFunction<_dart_sqlite3_errcode>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
+          'sqlite3_errcode');
+  late final _sqlite3_errcode =
+      _sqlite3_errcode_ptr.asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   int sqlite3_extended_errcode(
     ffi.Pointer<sqlite3> db,
@@ -2283,11 +2488,10 @@
   }
 
   late final _sqlite3_extended_errcode_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_extended_errcode>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_extended_errcode');
-  late final _dart_sqlite3_extended_errcode _sqlite3_extended_errcode =
-      _sqlite3_extended_errcode_ptr
-          .asFunction<_dart_sqlite3_extended_errcode>();
+  late final _sqlite3_extended_errcode = _sqlite3_extended_errcode_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_errmsg(
     ffi.Pointer<sqlite3> arg0,
@@ -2297,10 +2501,12 @@
     );
   }
 
-  late final _sqlite3_errmsg_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_errmsg>>('sqlite3_errmsg');
-  late final _dart_sqlite3_errmsg _sqlite3_errmsg =
-      _sqlite3_errmsg_ptr.asFunction<_dart_sqlite3_errmsg>();
+  late final _sqlite3_errmsg_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<sqlite3>)>>('sqlite3_errmsg');
+  late final _sqlite3_errmsg = _sqlite3_errmsg_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3>)>();
 
   ffi.Pointer<ffi.Void> sqlite3_errmsg16(
     ffi.Pointer<sqlite3> arg0,
@@ -2310,10 +2516,12 @@
     );
   }
 
-  late final _sqlite3_errmsg16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_errmsg16>>('sqlite3_errmsg16');
-  late final _dart_sqlite3_errmsg16 _sqlite3_errmsg16 =
-      _sqlite3_errmsg16_ptr.asFunction<_dart_sqlite3_errmsg16>();
+  late final _sqlite3_errmsg16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3>)>>('sqlite3_errmsg16');
+  late final _sqlite3_errmsg16 = _sqlite3_errmsg16_ptr
+      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_errstr(
     int arg0,
@@ -2324,9 +2532,10 @@
   }
 
   late final _sqlite3_errstr_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_errstr>>('sqlite3_errstr');
-  late final _dart_sqlite3_errstr _sqlite3_errstr =
-      _sqlite3_errstr_ptr.asFunction<_dart_sqlite3_errstr>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Int8> Function(ffi.Int32)>>(
+          'sqlite3_errstr');
+  late final _sqlite3_errstr =
+      _sqlite3_errstr_ptr.asFunction<ffi.Pointer<ffi.Int8> Function(int)>();
 
   /// CAPI3REF: Run-time Limits
   /// METHOD: sqlite3
@@ -2378,10 +2587,12 @@
     );
   }
 
-  late final _sqlite3_limit_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_limit>>('sqlite3_limit');
-  late final _dart_sqlite3_limit _sqlite3_limit =
-      _sqlite3_limit_ptr.asFunction<_dart_sqlite3_limit>();
+  late final _sqlite3_limit_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>, ffi.Int32, ffi.Int32)>>('sqlite3_limit');
+  late final _sqlite3_limit = _sqlite3_limit_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, int, int)>();
 
   /// CAPI3REF: Compiling An SQL Statement
   /// KEYWORDS: {SQL statement compiler}
@@ -2497,10 +2708,21 @@
     );
   }
 
-  late final _sqlite3_prepare_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_prepare>>('sqlite3_prepare');
-  late final _dart_sqlite3_prepare _sqlite3_prepare =
-      _sqlite3_prepare_ptr.asFunction<_dart_sqlite3_prepare>();
+  late final _sqlite3_prepare_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_prepare');
+  late final _sqlite3_prepare = _sqlite3_prepare_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   int sqlite3_prepare_v2(
     ffi.Pointer<sqlite3> db,
@@ -2518,10 +2740,21 @@
     );
   }
 
-  late final _sqlite3_prepare_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_prepare_v2>>('sqlite3_prepare_v2');
-  late final _dart_sqlite3_prepare_v2 _sqlite3_prepare_v2 =
-      _sqlite3_prepare_v2_ptr.asFunction<_dart_sqlite3_prepare_v2>();
+  late final _sqlite3_prepare_v2_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_prepare_v2');
+  late final _sqlite3_prepare_v2 = _sqlite3_prepare_v2_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   int sqlite3_prepare_v3(
     ffi.Pointer<sqlite3> db,
@@ -2541,10 +2774,23 @@
     );
   }
 
-  late final _sqlite3_prepare_v3_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_prepare_v3>>('sqlite3_prepare_v3');
-  late final _dart_sqlite3_prepare_v3 _sqlite3_prepare_v3 =
-      _sqlite3_prepare_v3_ptr.asFunction<_dart_sqlite3_prepare_v3>();
+  late final _sqlite3_prepare_v3_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Uint32,
+              ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_prepare_v3');
+  late final _sqlite3_prepare_v3 = _sqlite3_prepare_v3_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          int,
+          ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+          ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   int sqlite3_prepare16(
     ffi.Pointer<sqlite3> db,
@@ -2562,10 +2808,21 @@
     );
   }
 
-  late final _sqlite3_prepare16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_prepare16>>('sqlite3_prepare16');
-  late final _dart_sqlite3_prepare16 _sqlite3_prepare16 =
-      _sqlite3_prepare16_ptr.asFunction<_dart_sqlite3_prepare16>();
+  late final _sqlite3_prepare16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+              ffi.Pointer<ffi.Pointer<ffi.Void>>)>>('sqlite3_prepare16');
+  late final _sqlite3_prepare16 = _sqlite3_prepare16_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+          ffi.Pointer<ffi.Pointer<ffi.Void>>)>();
 
   int sqlite3_prepare16_v2(
     ffi.Pointer<sqlite3> db,
@@ -2583,11 +2840,21 @@
     );
   }
 
-  late final _sqlite3_prepare16_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_prepare16_v2>>(
-          'sqlite3_prepare16_v2');
-  late final _dart_sqlite3_prepare16_v2 _sqlite3_prepare16_v2 =
-      _sqlite3_prepare16_v2_ptr.asFunction<_dart_sqlite3_prepare16_v2>();
+  late final _sqlite3_prepare16_v2_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+              ffi.Pointer<ffi.Pointer<ffi.Void>>)>>('sqlite3_prepare16_v2');
+  late final _sqlite3_prepare16_v2 = _sqlite3_prepare16_v2_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+          ffi.Pointer<ffi.Pointer<ffi.Void>>)>();
 
   int sqlite3_prepare16_v3(
     ffi.Pointer<sqlite3> db,
@@ -2607,11 +2874,23 @@
     );
   }
 
-  late final _sqlite3_prepare16_v3_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_prepare16_v3>>(
-          'sqlite3_prepare16_v3');
-  late final _dart_sqlite3_prepare16_v3 _sqlite3_prepare16_v3 =
-      _sqlite3_prepare16_v3_ptr.asFunction<_dart_sqlite3_prepare16_v3>();
+  late final _sqlite3_prepare16_v3_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Uint32,
+              ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+              ffi.Pointer<ffi.Pointer<ffi.Void>>)>>('sqlite3_prepare16_v3');
+  late final _sqlite3_prepare16_v3 = _sqlite3_prepare16_v3_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          int,
+          ffi.Pointer<ffi.Pointer<sqlite3_stmt>>,
+          ffi.Pointer<ffi.Pointer<ffi.Void>>)>();
 
   /// CAPI3REF: Retrieving Statement SQL
   /// METHOD: sqlite3_stmt
@@ -2657,10 +2936,12 @@
     );
   }
 
-  late final _sqlite3_sql_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_sql>>('sqlite3_sql');
-  late final _dart_sqlite3_sql _sqlite3_sql =
-      _sqlite3_sql_ptr.asFunction<_dart_sqlite3_sql>();
+  late final _sqlite3_sql_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<sqlite3_stmt>)>>('sqlite3_sql');
+  late final _sqlite3_sql = _sqlite3_sql_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_expanded_sql(
     ffi.Pointer<sqlite3_stmt> pStmt,
@@ -2670,11 +2951,12 @@
     );
   }
 
-  late final _sqlite3_expanded_sql_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_expanded_sql>>(
-          'sqlite3_expanded_sql');
-  late final _dart_sqlite3_expanded_sql _sqlite3_expanded_sql =
-      _sqlite3_expanded_sql_ptr.asFunction<_dart_sqlite3_expanded_sql>();
+  late final _sqlite3_expanded_sql_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<sqlite3_stmt>)>>('sqlite3_expanded_sql');
+  late final _sqlite3_expanded_sql = _sqlite3_expanded_sql_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_normalized_sql(
     ffi.Pointer<sqlite3_stmt> pStmt,
@@ -2684,11 +2966,12 @@
     );
   }
 
-  late final _sqlite3_normalized_sql_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_normalized_sql>>(
-          'sqlite3_normalized_sql');
-  late final _dart_sqlite3_normalized_sql _sqlite3_normalized_sql =
-      _sqlite3_normalized_sql_ptr.asFunction<_dart_sqlite3_normalized_sql>();
+  late final _sqlite3_normalized_sql_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<sqlite3_stmt>)>>('sqlite3_normalized_sql');
+  late final _sqlite3_normalized_sql = _sqlite3_normalized_sql_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Determine If An SQL Statement Writes The Database
   /// METHOD: sqlite3_stmt
@@ -2730,11 +3013,11 @@
     );
   }
 
-  late final _sqlite3_stmt_readonly_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_stmt_readonly>>(
-          'sqlite3_stmt_readonly');
-  late final _dart_sqlite3_stmt_readonly _sqlite3_stmt_readonly =
-      _sqlite3_stmt_readonly_ptr.asFunction<_dart_sqlite3_stmt_readonly>();
+  late final _sqlite3_stmt_readonly_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_stmt_readonly');
+  late final _sqlite3_stmt_readonly = _sqlite3_stmt_readonly_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Query The EXPLAIN Setting For A Prepared Statement
   /// METHOD: sqlite3_stmt
@@ -2752,11 +3035,11 @@
     );
   }
 
-  late final _sqlite3_stmt_isexplain_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_stmt_isexplain>>(
-          'sqlite3_stmt_isexplain');
-  late final _dart_sqlite3_stmt_isexplain _sqlite3_stmt_isexplain =
-      _sqlite3_stmt_isexplain_ptr.asFunction<_dart_sqlite3_stmt_isexplain>();
+  late final _sqlite3_stmt_isexplain_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_stmt_isexplain');
+  late final _sqlite3_stmt_isexplain = _sqlite3_stmt_isexplain_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Determine If A Prepared Statement Has Been Reset
   /// METHOD: sqlite3_stmt
@@ -2783,10 +3066,11 @@
     );
   }
 
-  late final _sqlite3_stmt_busy_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_stmt_busy>>('sqlite3_stmt_busy');
-  late final _dart_sqlite3_stmt_busy _sqlite3_stmt_busy =
-      _sqlite3_stmt_busy_ptr.asFunction<_dart_sqlite3_stmt_busy>();
+  late final _sqlite3_stmt_busy_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_stmt_busy');
+  late final _sqlite3_stmt_busy = _sqlite3_stmt_busy_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Binding Values To Prepared Statements
   /// KEYWORDS: {host parameter} {host parameters} {host parameter name}
@@ -2927,7 +3211,8 @@
     int arg1,
     ffi.Pointer<ffi.Void> arg2,
     int n,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_50>> arg4,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg4,
   ) {
     return _sqlite3_bind_blob(
       arg0,
@@ -2938,17 +3223,33 @@
     );
   }
 
-  late final _sqlite3_bind_blob_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_blob>>('sqlite3_bind_blob');
-  late final _dart_sqlite3_bind_blob _sqlite3_bind_blob =
-      _sqlite3_bind_blob_ptr.asFunction<_dart_sqlite3_bind_blob>();
+  late final _sqlite3_bind_blob_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_bind_blob');
+  late final _sqlite3_bind_blob = _sqlite3_bind_blob_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>,
+          int,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_bind_blob64(
     ffi.Pointer<sqlite3_stmt> arg0,
     int arg1,
     ffi.Pointer<ffi.Void> arg2,
     int arg3,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_51>> arg4,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg4,
   ) {
     return _sqlite3_bind_blob64(
       arg0,
@@ -2959,11 +3260,25 @@
     );
   }
 
-  late final _sqlite3_bind_blob64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_blob64>>(
-          'sqlite3_bind_blob64');
-  late final _dart_sqlite3_bind_blob64 _sqlite3_bind_blob64 =
-      _sqlite3_bind_blob64_ptr.asFunction<_dart_sqlite3_bind_blob64>();
+  late final _sqlite3_bind_blob64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Void>,
+              sqlite3_uint64,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_bind_blob64');
+  late final _sqlite3_bind_blob64 = _sqlite3_bind_blob64_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>,
+          int,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_bind_double(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -2977,11 +3292,12 @@
     );
   }
 
-  late final _sqlite3_bind_double_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_double>>(
-          'sqlite3_bind_double');
-  late final _dart_sqlite3_bind_double _sqlite3_bind_double =
-      _sqlite3_bind_double_ptr.asFunction<_dart_sqlite3_bind_double>();
+  late final _sqlite3_bind_double_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32,
+              ffi.Double)>>('sqlite3_bind_double');
+  late final _sqlite3_bind_double = _sqlite3_bind_double_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int, double)>();
 
   int sqlite3_bind_int(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -2995,10 +3311,12 @@
     );
   }
 
-  late final _sqlite3_bind_int_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_int>>('sqlite3_bind_int');
-  late final _dart_sqlite3_bind_int _sqlite3_bind_int =
-      _sqlite3_bind_int_ptr.asFunction<_dart_sqlite3_bind_int>();
+  late final _sqlite3_bind_int_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32,
+              ffi.Int32)>>('sqlite3_bind_int');
+  late final _sqlite3_bind_int = _sqlite3_bind_int_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int, int)>();
 
   int sqlite3_bind_int64(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3012,10 +3330,12 @@
     );
   }
 
-  late final _sqlite3_bind_int64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_int64>>('sqlite3_bind_int64');
-  late final _dart_sqlite3_bind_int64 _sqlite3_bind_int64 =
-      _sqlite3_bind_int64_ptr.asFunction<_dart_sqlite3_bind_int64>();
+  late final _sqlite3_bind_int64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32,
+              sqlite3_int64)>>('sqlite3_bind_int64');
+  late final _sqlite3_bind_int64 = _sqlite3_bind_int64_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int, int)>();
 
   int sqlite3_bind_null(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3027,17 +3347,20 @@
     );
   }
 
-  late final _sqlite3_bind_null_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_null>>('sqlite3_bind_null');
-  late final _dart_sqlite3_bind_null _sqlite3_bind_null =
-      _sqlite3_bind_null_ptr.asFunction<_dart_sqlite3_bind_null>();
+  late final _sqlite3_bind_null_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_bind_null');
+  late final _sqlite3_bind_null = _sqlite3_bind_null_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   int sqlite3_bind_text(
     ffi.Pointer<sqlite3_stmt> arg0,
     int arg1,
     ffi.Pointer<ffi.Int8> arg2,
     int arg3,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_52>> arg4,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg4,
   ) {
     return _sqlite3_bind_text(
       arg0,
@@ -3048,17 +3371,33 @@
     );
   }
 
-  late final _sqlite3_bind_text_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_text>>('sqlite3_bind_text');
-  late final _dart_sqlite3_bind_text _sqlite3_bind_text =
-      _sqlite3_bind_text_ptr.asFunction<_dart_sqlite3_bind_text>();
+  late final _sqlite3_bind_text_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_bind_text');
+  late final _sqlite3_bind_text = _sqlite3_bind_text_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>,
+          int,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_bind_text16(
     ffi.Pointer<sqlite3_stmt> arg0,
     int arg1,
     ffi.Pointer<ffi.Void> arg2,
     int arg3,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_53>> arg4,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg4,
   ) {
     return _sqlite3_bind_text16(
       arg0,
@@ -3069,18 +3408,33 @@
     );
   }
 
-  late final _sqlite3_bind_text16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_text16>>(
-          'sqlite3_bind_text16');
-  late final _dart_sqlite3_bind_text16 _sqlite3_bind_text16 =
-      _sqlite3_bind_text16_ptr.asFunction<_dart_sqlite3_bind_text16>();
+  late final _sqlite3_bind_text16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_bind_text16');
+  late final _sqlite3_bind_text16 = _sqlite3_bind_text16_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>,
+          int,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_bind_text64(
     ffi.Pointer<sqlite3_stmt> arg0,
     int arg1,
     ffi.Pointer<ffi.Int8> arg2,
     int arg3,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_54>> arg4,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg4,
     int encoding,
   ) {
     return _sqlite3_bind_text64(
@@ -3093,11 +3447,25 @@
     );
   }
 
-  late final _sqlite3_bind_text64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_text64>>(
-          'sqlite3_bind_text64');
-  late final _dart_sqlite3_bind_text64 _sqlite3_bind_text64 =
-      _sqlite3_bind_text64_ptr.asFunction<_dart_sqlite3_bind_text64>();
+  late final _sqlite3_bind_text64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int8>,
+              sqlite3_uint64,
+              ffi.Pointer<
+                  ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+              ffi.Uint8)>>('sqlite3_bind_text64');
+  late final _sqlite3_bind_text64 = _sqlite3_bind_text64_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>,
+          int,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+          int)>();
 
   int sqlite3_bind_value(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3111,17 +3479,21 @@
     );
   }
 
-  late final _sqlite3_bind_value_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_value>>('sqlite3_bind_value');
-  late final _dart_sqlite3_bind_value _sqlite3_bind_value =
-      _sqlite3_bind_value_ptr.asFunction<_dart_sqlite3_bind_value>();
+  late final _sqlite3_bind_value_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32,
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_bind_value');
+  late final _sqlite3_bind_value = _sqlite3_bind_value_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>, int, ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_bind_pointer(
     ffi.Pointer<sqlite3_stmt> arg0,
     int arg1,
     ffi.Pointer<ffi.Void> arg2,
     ffi.Pointer<ffi.Int8> arg3,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_55>> arg4,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg4,
   ) {
     return _sqlite3_bind_pointer(
       arg0,
@@ -3132,11 +3504,25 @@
     );
   }
 
-  late final _sqlite3_bind_pointer_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_pointer>>(
-          'sqlite3_bind_pointer');
-  late final _dart_sqlite3_bind_pointer _sqlite3_bind_pointer =
-      _sqlite3_bind_pointer_ptr.asFunction<_dart_sqlite3_bind_pointer>();
+  late final _sqlite3_bind_pointer_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_bind_pointer');
+  late final _sqlite3_bind_pointer = _sqlite3_bind_pointer_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>,
+          int,
+          ffi.Pointer<ffi.Void>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_bind_zeroblob(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3150,11 +3536,12 @@
     );
   }
 
-  late final _sqlite3_bind_zeroblob_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_zeroblob>>(
-          'sqlite3_bind_zeroblob');
-  late final _dart_sqlite3_bind_zeroblob _sqlite3_bind_zeroblob =
-      _sqlite3_bind_zeroblob_ptr.asFunction<_dart_sqlite3_bind_zeroblob>();
+  late final _sqlite3_bind_zeroblob_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32,
+              ffi.Int32)>>('sqlite3_bind_zeroblob');
+  late final _sqlite3_bind_zeroblob = _sqlite3_bind_zeroblob_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int, int)>();
 
   int sqlite3_bind_zeroblob64(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3168,11 +3555,12 @@
     );
   }
 
-  late final _sqlite3_bind_zeroblob64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_zeroblob64>>(
-          'sqlite3_bind_zeroblob64');
-  late final _dart_sqlite3_bind_zeroblob64 _sqlite3_bind_zeroblob64 =
-      _sqlite3_bind_zeroblob64_ptr.asFunction<_dart_sqlite3_bind_zeroblob64>();
+  late final _sqlite3_bind_zeroblob64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32,
+              sqlite3_uint64)>>('sqlite3_bind_zeroblob64');
+  late final _sqlite3_bind_zeroblob64 = _sqlite3_bind_zeroblob64_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int, int)>();
 
   /// CAPI3REF: Number Of SQL Parameters
   /// METHOD: sqlite3_stmt
@@ -3199,12 +3587,11 @@
     );
   }
 
-  late final _sqlite3_bind_parameter_count_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_parameter_count>>(
-          'sqlite3_bind_parameter_count');
-  late final _dart_sqlite3_bind_parameter_count _sqlite3_bind_parameter_count =
-      _sqlite3_bind_parameter_count_ptr
-          .asFunction<_dart_sqlite3_bind_parameter_count>();
+  late final _sqlite3_bind_parameter_count_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_bind_parameter_count');
+  late final _sqlite3_bind_parameter_count = _sqlite3_bind_parameter_count_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Name Of A Host Parameter
   /// METHOD: sqlite3_stmt
@@ -3240,12 +3627,13 @@
     );
   }
 
-  late final _sqlite3_bind_parameter_name_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_parameter_name>>(
-          'sqlite3_bind_parameter_name');
-  late final _dart_sqlite3_bind_parameter_name _sqlite3_bind_parameter_name =
-      _sqlite3_bind_parameter_name_ptr
-          .asFunction<_dart_sqlite3_bind_parameter_name>();
+  late final _sqlite3_bind_parameter_name_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_bind_parameter_name');
+  late final _sqlite3_bind_parameter_name =
+      _sqlite3_bind_parameter_name_ptr.asFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   /// CAPI3REF: Index Of A Parameter With A Given Name
   /// METHOD: sqlite3_stmt
@@ -3271,12 +3659,13 @@
     );
   }
 
-  late final _sqlite3_bind_parameter_index_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_bind_parameter_index>>(
-          'sqlite3_bind_parameter_index');
-  late final _dart_sqlite3_bind_parameter_index _sqlite3_bind_parameter_index =
-      _sqlite3_bind_parameter_index_ptr
-          .asFunction<_dart_sqlite3_bind_parameter_index>();
+  late final _sqlite3_bind_parameter_index_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_bind_parameter_index');
+  late final _sqlite3_bind_parameter_index =
+      _sqlite3_bind_parameter_index_ptr.asFunction<
+          int Function(ffi.Pointer<sqlite3_stmt>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Reset All Bindings On A Prepared Statement
   /// METHOD: sqlite3_stmt
@@ -3292,11 +3681,11 @@
     );
   }
 
-  late final _sqlite3_clear_bindings_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_clear_bindings>>(
-          'sqlite3_clear_bindings');
-  late final _dart_sqlite3_clear_bindings _sqlite3_clear_bindings =
-      _sqlite3_clear_bindings_ptr.asFunction<_dart_sqlite3_clear_bindings>();
+  late final _sqlite3_clear_bindings_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_clear_bindings');
+  late final _sqlite3_clear_bindings = _sqlite3_clear_bindings_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Number Of Columns In A Result Set
   /// METHOD: sqlite3_stmt
@@ -3318,11 +3707,11 @@
     );
   }
 
-  late final _sqlite3_column_count_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_count>>(
-          'sqlite3_column_count');
-  late final _dart_sqlite3_column_count _sqlite3_column_count =
-      _sqlite3_column_count_ptr.asFunction<_dart_sqlite3_column_count>();
+  late final _sqlite3_column_count_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_column_count');
+  late final _sqlite3_column_count = _sqlite3_column_count_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Column Names In A Result Set
   /// METHOD: sqlite3_stmt
@@ -3359,11 +3748,12 @@
     );
   }
 
-  late final _sqlite3_column_name_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_name>>(
-          'sqlite3_column_name');
-  late final _dart_sqlite3_column_name _sqlite3_column_name =
-      _sqlite3_column_name_ptr.asFunction<_dart_sqlite3_column_name>();
+  late final _sqlite3_column_name_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_name');
+  late final _sqlite3_column_name = _sqlite3_column_name_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_column_name16(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3375,11 +3765,12 @@
     );
   }
 
-  late final _sqlite3_column_name16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_name16>>(
-          'sqlite3_column_name16');
-  late final _dart_sqlite3_column_name16 _sqlite3_column_name16 =
-      _sqlite3_column_name16_ptr.asFunction<_dart_sqlite3_column_name16>();
+  late final _sqlite3_column_name16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_name16');
+  late final _sqlite3_column_name16 = _sqlite3_column_name16_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   /// CAPI3REF: Source Of Data In A Query Result
   /// METHOD: sqlite3_stmt
@@ -3431,12 +3822,13 @@
     );
   }
 
-  late final _sqlite3_column_database_name_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_database_name>>(
-          'sqlite3_column_database_name');
-  late final _dart_sqlite3_column_database_name _sqlite3_column_database_name =
-      _sqlite3_column_database_name_ptr
-          .asFunction<_dart_sqlite3_column_database_name>();
+  late final _sqlite3_column_database_name_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_database_name');
+  late final _sqlite3_column_database_name =
+      _sqlite3_column_database_name_ptr.asFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_column_database_name16(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3448,12 +3840,13 @@
     );
   }
 
-  late final _sqlite3_column_database_name16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_database_name16>>(
-          'sqlite3_column_database_name16');
-  late final _dart_sqlite3_column_database_name16
-      _sqlite3_column_database_name16 = _sqlite3_column_database_name16_ptr
-          .asFunction<_dart_sqlite3_column_database_name16>();
+  late final _sqlite3_column_database_name16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_database_name16');
+  late final _sqlite3_column_database_name16 =
+      _sqlite3_column_database_name16_ptr.asFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_column_table_name(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3465,12 +3858,13 @@
     );
   }
 
-  late final _sqlite3_column_table_name_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_table_name>>(
-          'sqlite3_column_table_name');
-  late final _dart_sqlite3_column_table_name _sqlite3_column_table_name =
-      _sqlite3_column_table_name_ptr
-          .asFunction<_dart_sqlite3_column_table_name>();
+  late final _sqlite3_column_table_name_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_table_name');
+  late final _sqlite3_column_table_name =
+      _sqlite3_column_table_name_ptr.asFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_column_table_name16(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3482,12 +3876,13 @@
     );
   }
 
-  late final _sqlite3_column_table_name16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_table_name16>>(
-          'sqlite3_column_table_name16');
-  late final _dart_sqlite3_column_table_name16 _sqlite3_column_table_name16 =
-      _sqlite3_column_table_name16_ptr
-          .asFunction<_dart_sqlite3_column_table_name16>();
+  late final _sqlite3_column_table_name16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_table_name16');
+  late final _sqlite3_column_table_name16 =
+      _sqlite3_column_table_name16_ptr.asFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_column_origin_name(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3499,12 +3894,13 @@
     );
   }
 
-  late final _sqlite3_column_origin_name_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_origin_name>>(
-          'sqlite3_column_origin_name');
-  late final _dart_sqlite3_column_origin_name _sqlite3_column_origin_name =
-      _sqlite3_column_origin_name_ptr
-          .asFunction<_dart_sqlite3_column_origin_name>();
+  late final _sqlite3_column_origin_name_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_origin_name');
+  late final _sqlite3_column_origin_name =
+      _sqlite3_column_origin_name_ptr.asFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_column_origin_name16(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3516,12 +3912,13 @@
     );
   }
 
-  late final _sqlite3_column_origin_name16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_origin_name16>>(
-          'sqlite3_column_origin_name16');
-  late final _dart_sqlite3_column_origin_name16 _sqlite3_column_origin_name16 =
-      _sqlite3_column_origin_name16_ptr
-          .asFunction<_dart_sqlite3_column_origin_name16>();
+  late final _sqlite3_column_origin_name16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_origin_name16');
+  late final _sqlite3_column_origin_name16 =
+      _sqlite3_column_origin_name16_ptr.asFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   /// CAPI3REF: Declared Datatype Of A Query Result
   /// METHOD: sqlite3_stmt
@@ -3561,11 +3958,12 @@
     );
   }
 
-  late final _sqlite3_column_decltype_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_decltype>>(
-          'sqlite3_column_decltype');
-  late final _dart_sqlite3_column_decltype _sqlite3_column_decltype =
-      _sqlite3_column_decltype_ptr.asFunction<_dart_sqlite3_column_decltype>();
+  late final _sqlite3_column_decltype_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_decltype');
+  late final _sqlite3_column_decltype = _sqlite3_column_decltype_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_column_decltype16(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3577,12 +3975,13 @@
     );
   }
 
-  late final _sqlite3_column_decltype16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_decltype16>>(
-          'sqlite3_column_decltype16');
-  late final _dart_sqlite3_column_decltype16 _sqlite3_column_decltype16 =
-      _sqlite3_column_decltype16_ptr
-          .asFunction<_dart_sqlite3_column_decltype16>();
+  late final _sqlite3_column_decltype16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Int32)>>('sqlite3_column_decltype16');
+  late final _sqlite3_column_decltype16 =
+      _sqlite3_column_decltype16_ptr.asFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   /// CAPI3REF: Evaluate An SQL Statement
   /// METHOD: sqlite3_stmt
@@ -3672,10 +4071,11 @@
     );
   }
 
-  late final _sqlite3_step_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_step>>('sqlite3_step');
-  late final _dart_sqlite3_step _sqlite3_step =
-      _sqlite3_step_ptr.asFunction<_dart_sqlite3_step>();
+  late final _sqlite3_step_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_step');
+  late final _sqlite3_step =
+      _sqlite3_step_ptr.asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Number of columns in a result set
   /// METHOD: sqlite3_stmt
@@ -3702,10 +4102,11 @@
     );
   }
 
-  late final _sqlite3_data_count_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_data_count>>('sqlite3_data_count');
-  late final _dart_sqlite3_data_count _sqlite3_data_count =
-      _sqlite3_data_count_ptr.asFunction<_dart_sqlite3_data_count>();
+  late final _sqlite3_data_count_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_data_count');
+  late final _sqlite3_data_count = _sqlite3_data_count_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Result Values From A Query
   /// KEYWORDS: {column access functions}
@@ -3924,11 +4325,12 @@
     );
   }
 
-  late final _sqlite3_column_blob_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_blob>>(
-          'sqlite3_column_blob');
-  late final _dart_sqlite3_column_blob _sqlite3_column_blob =
-      _sqlite3_column_blob_ptr.asFunction<_dart_sqlite3_column_blob>();
+  late final _sqlite3_column_blob_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_blob');
+  late final _sqlite3_column_blob = _sqlite3_column_blob_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   double sqlite3_column_double(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3940,11 +4342,12 @@
     );
   }
 
-  late final _sqlite3_column_double_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_double>>(
-          'sqlite3_column_double');
-  late final _dart_sqlite3_column_double _sqlite3_column_double =
-      _sqlite3_column_double_ptr.asFunction<_dart_sqlite3_column_double>();
+  late final _sqlite3_column_double_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Double Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_double');
+  late final _sqlite3_column_double = _sqlite3_column_double_ptr
+      .asFunction<double Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   int sqlite3_column_int(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3956,10 +4359,12 @@
     );
   }
 
-  late final _sqlite3_column_int_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_int>>('sqlite3_column_int');
-  late final _dart_sqlite3_column_int _sqlite3_column_int =
-      _sqlite3_column_int_ptr.asFunction<_dart_sqlite3_column_int>();
+  late final _sqlite3_column_int_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_int');
+  late final _sqlite3_column_int = _sqlite3_column_int_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   int sqlite3_column_int64(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3971,11 +4376,12 @@
     );
   }
 
-  late final _sqlite3_column_int64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_int64>>(
-          'sqlite3_column_int64');
-  late final _dart_sqlite3_column_int64 _sqlite3_column_int64 =
-      _sqlite3_column_int64_ptr.asFunction<_dart_sqlite3_column_int64>();
+  late final _sqlite3_column_int64_ptr = _lookup<
+      ffi.NativeFunction<
+          sqlite3_int64 Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_int64');
+  late final _sqlite3_column_int64 = _sqlite3_column_int64_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Uint8> sqlite3_column_text(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -3987,11 +4393,12 @@
     );
   }
 
-  late final _sqlite3_column_text_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_text>>(
-          'sqlite3_column_text');
-  late final _dart_sqlite3_column_text _sqlite3_column_text =
-      _sqlite3_column_text_ptr.asFunction<_dart_sqlite3_column_text>();
+  late final _sqlite3_column_text_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Uint8> Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_text');
+  late final _sqlite3_column_text = _sqlite3_column_text_ptr.asFunction<
+      ffi.Pointer<ffi.Uint8> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<ffi.Void> sqlite3_column_text16(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -4003,11 +4410,12 @@
     );
   }
 
-  late final _sqlite3_column_text16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_text16>>(
-          'sqlite3_column_text16');
-  late final _dart_sqlite3_column_text16 _sqlite3_column_text16 =
-      _sqlite3_column_text16_ptr.asFunction<_dart_sqlite3_column_text16>();
+  late final _sqlite3_column_text16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_text16');
+  late final _sqlite3_column_text16 = _sqlite3_column_text16_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   ffi.Pointer<sqlite3_value> sqlite3_column_value(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -4019,11 +4427,12 @@
     );
   }
 
-  late final _sqlite3_column_value_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_value>>(
-          'sqlite3_column_value');
-  late final _dart_sqlite3_column_value _sqlite3_column_value =
-      _sqlite3_column_value_ptr.asFunction<_dart_sqlite3_column_value>();
+  late final _sqlite3_column_value_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_value> Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_value');
+  late final _sqlite3_column_value = _sqlite3_column_value_ptr.asFunction<
+      ffi.Pointer<sqlite3_value> Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   int sqlite3_column_bytes(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -4035,11 +4444,12 @@
     );
   }
 
-  late final _sqlite3_column_bytes_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_bytes>>(
-          'sqlite3_column_bytes');
-  late final _dart_sqlite3_column_bytes _sqlite3_column_bytes =
-      _sqlite3_column_bytes_ptr.asFunction<_dart_sqlite3_column_bytes>();
+  late final _sqlite3_column_bytes_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_bytes');
+  late final _sqlite3_column_bytes = _sqlite3_column_bytes_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   int sqlite3_column_bytes16(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -4051,11 +4461,12 @@
     );
   }
 
-  late final _sqlite3_column_bytes16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_bytes16>>(
-          'sqlite3_column_bytes16');
-  late final _dart_sqlite3_column_bytes16 _sqlite3_column_bytes16 =
-      _sqlite3_column_bytes16_ptr.asFunction<_dart_sqlite3_column_bytes16>();
+  late final _sqlite3_column_bytes16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_bytes16');
+  late final _sqlite3_column_bytes16 = _sqlite3_column_bytes16_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   int sqlite3_column_type(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -4067,11 +4478,12 @@
     );
   }
 
-  late final _sqlite3_column_type_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_column_type>>(
-          'sqlite3_column_type');
-  late final _dart_sqlite3_column_type _sqlite3_column_type =
-      _sqlite3_column_type_ptr.asFunction<_dart_sqlite3_column_type>();
+  late final _sqlite3_column_type_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_stmt>, ffi.Int32)>>('sqlite3_column_type');
+  late final _sqlite3_column_type = _sqlite3_column_type_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int)>();
 
   /// CAPI3REF: Destroy A Prepared Statement Object
   /// DESTRUCTOR: sqlite3_stmt
@@ -4105,10 +4517,11 @@
     );
   }
 
-  late final _sqlite3_finalize_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_finalize>>('sqlite3_finalize');
-  late final _dart_sqlite3_finalize _sqlite3_finalize =
-      _sqlite3_finalize_ptr.asFunction<_dart_sqlite3_finalize>();
+  late final _sqlite3_finalize_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_finalize');
+  late final _sqlite3_finalize = _sqlite3_finalize_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Reset A Prepared Statement Object
   /// METHOD: sqlite3_stmt
@@ -4141,10 +4554,11 @@
     );
   }
 
-  late final _sqlite3_reset_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_reset>>('sqlite3_reset');
-  late final _dart_sqlite3_reset _sqlite3_reset =
-      _sqlite3_reset_ptr.asFunction<_dart_sqlite3_reset>();
+  late final _sqlite3_reset_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_reset');
+  late final _sqlite3_reset =
+      _sqlite3_reset_ptr.asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Create Or Redefine SQL Functions
   /// KEYWORDS: {function creation routines}
@@ -4275,9 +4689,19 @@
     int nArg,
     int eTextRep,
     ffi.Pointer<ffi.Void> pApp,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_56>> xFunc,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_57>> xStep,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_58>> xFinal,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xFunc,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xStep,
+    ffi.Pointer<
+            ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>
+        xFinal,
   ) {
     return _sqlite3_create_function(
       db,
@@ -4292,10 +4716,49 @@
   }
 
   late final _sqlite3_create_function_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_function>>(
+      _lookup<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(
+                      ffi.Pointer<sqlite3>,
+                      ffi.Pointer<ffi.Int8>,
+                      ffi.Int32,
+                      ffi.Int32,
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>)>>)>>(
           'sqlite3_create_function');
-  late final _dart_sqlite3_create_function _sqlite3_create_function =
-      _sqlite3_create_function_ptr.asFunction<_dart_sqlite3_create_function>();
+  late final _sqlite3_create_function = _sqlite3_create_function_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          int,
+          ffi.Pointer<ffi.Void>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                      ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                      ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(ffi.Pointer<sqlite3_context>)>>)>();
 
   int sqlite3_create_function16(
     ffi.Pointer<sqlite3> db,
@@ -4303,9 +4766,19 @@
     int nArg,
     int eTextRep,
     ffi.Pointer<ffi.Void> pApp,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_59>> xFunc,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_60>> xStep,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_61>> xFinal,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xFunc,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xStep,
+    ffi.Pointer<
+            ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>
+        xFinal,
   ) {
     return _sqlite3_create_function16(
       db,
@@ -4320,11 +4793,50 @@
   }
 
   late final _sqlite3_create_function16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_function16>>(
+      _lookup<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(
+                      ffi.Pointer<sqlite3>,
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Int32,
+                      ffi.Int32,
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>)>>)>>(
           'sqlite3_create_function16');
-  late final _dart_sqlite3_create_function16 _sqlite3_create_function16 =
-      _sqlite3_create_function16_ptr
-          .asFunction<_dart_sqlite3_create_function16>();
+  late final _sqlite3_create_function16 =
+      _sqlite3_create_function16_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              int,
+              int,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                          ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                          ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>)>>)>();
 
   int sqlite3_create_function_v2(
     ffi.Pointer<sqlite3> db,
@@ -4332,10 +4844,21 @@
     int nArg,
     int eTextRep,
     ffi.Pointer<ffi.Void> pApp,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_62>> xFunc,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_63>> xStep,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_64>> xFinal,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_65>> xDestroy,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xFunc,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xStep,
+    ffi.Pointer<
+            ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>
+        xFinal,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        xDestroy,
   ) {
     return _sqlite3_create_function_v2(
       db,
@@ -4351,11 +4874,55 @@
   }
 
   late final _sqlite3_create_function_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_function_v2>>(
+      _lookup<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(
+                      ffi.Pointer<sqlite3>,
+                      ffi.Pointer<ffi.Int8>,
+                      ffi.Int32,
+                      ffi.Int32,
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(ffi.Pointer<sqlite3_context>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>(
           'sqlite3_create_function_v2');
-  late final _dart_sqlite3_create_function_v2 _sqlite3_create_function_v2 =
-      _sqlite3_create_function_v2_ptr
-          .asFunction<_dart_sqlite3_create_function_v2>();
+  late final _sqlite3_create_function_v2 =
+      _sqlite3_create_function_v2_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              int,
+              int,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                          ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                          ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_create_window_function(
     ffi.Pointer<sqlite3> db,
@@ -4363,11 +4930,24 @@
     int nArg,
     int eTextRep,
     ffi.Pointer<ffi.Void> pApp,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_66>> xStep,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_67>> xFinal,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_68>> xValue,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_69>> xInverse,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_70>> xDestroy,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xStep,
+    ffi.Pointer<
+            ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>
+        xFinal,
+    ffi.Pointer<
+            ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>
+        xValue,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                    ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>
+        xInverse,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        xDestroy,
   ) {
     return _sqlite3_create_window_function(
       db,
@@ -4384,11 +4964,61 @@
   }
 
   late final _sqlite3_create_window_function_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_window_function>>(
+      _lookup<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(
+                      ffi.Pointer<sqlite3>,
+                      ffi.Pointer<ffi.Int8>,
+                      ffi.Int32,
+                      ffi.Int32,
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(ffi.Pointer<sqlite3_context>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(ffi.Pointer<sqlite3_context>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(
+                                  ffi.Pointer<sqlite3_context>,
+                                  ffi.Int32,
+                                  ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+                      ffi.Pointer<
+                          ffi.NativeFunction<
+                              ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>(
           'sqlite3_create_window_function');
-  late final _dart_sqlite3_create_window_function
-      _sqlite3_create_window_function = _sqlite3_create_window_function_ptr
-          .asFunction<_dart_sqlite3_create_window_function>();
+  late final _sqlite3_create_window_function =
+      _sqlite3_create_window_function_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              int,
+              int,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                          ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Int32,
+                          ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_aggregate_count(
     ffi.Pointer<sqlite3_context> arg0,
@@ -4398,11 +5028,11 @@
     );
   }
 
-  late final _sqlite3_aggregate_count_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_aggregate_count>>(
-          'sqlite3_aggregate_count');
-  late final _dart_sqlite3_aggregate_count _sqlite3_aggregate_count =
-      _sqlite3_aggregate_count_ptr.asFunction<_dart_sqlite3_aggregate_count>();
+  late final _sqlite3_aggregate_count_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_context>)>>(
+      'sqlite3_aggregate_count');
+  late final _sqlite3_aggregate_count = _sqlite3_aggregate_count_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_context>)>();
 
   int sqlite3_expired(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -4412,10 +5042,11 @@
     );
   }
 
-  late final _sqlite3_expired_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_expired>>('sqlite3_expired');
-  late final _dart_sqlite3_expired _sqlite3_expired =
-      _sqlite3_expired_ptr.asFunction<_dart_sqlite3_expired>();
+  late final _sqlite3_expired_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>)>>(
+      'sqlite3_expired');
+  late final _sqlite3_expired = _sqlite3_expired_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>)>();
 
   int sqlite3_transfer_bindings(
     ffi.Pointer<sqlite3_stmt> arg0,
@@ -4427,35 +5058,40 @@
     );
   }
 
-  late final _sqlite3_transfer_bindings_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_transfer_bindings>>(
-          'sqlite3_transfer_bindings');
-  late final _dart_sqlite3_transfer_bindings _sqlite3_transfer_bindings =
-      _sqlite3_transfer_bindings_ptr
-          .asFunction<_dart_sqlite3_transfer_bindings>();
+  late final _sqlite3_transfer_bindings_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>,
+              ffi.Pointer<sqlite3_stmt>)>>('sqlite3_transfer_bindings');
+  late final _sqlite3_transfer_bindings =
+      _sqlite3_transfer_bindings_ptr.asFunction<
+          int Function(ffi.Pointer<sqlite3_stmt>, ffi.Pointer<sqlite3_stmt>)>();
 
   int sqlite3_global_recover() {
     return _sqlite3_global_recover();
   }
 
   late final _sqlite3_global_recover_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_global_recover>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>(
           'sqlite3_global_recover');
-  late final _dart_sqlite3_global_recover _sqlite3_global_recover =
-      _sqlite3_global_recover_ptr.asFunction<_dart_sqlite3_global_recover>();
+  late final _sqlite3_global_recover =
+      _sqlite3_global_recover_ptr.asFunction<int Function()>();
 
   void sqlite3_thread_cleanup() {
     return _sqlite3_thread_cleanup();
   }
 
   late final _sqlite3_thread_cleanup_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_thread_cleanup>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>(
           'sqlite3_thread_cleanup');
-  late final _dart_sqlite3_thread_cleanup _sqlite3_thread_cleanup =
-      _sqlite3_thread_cleanup_ptr.asFunction<_dart_sqlite3_thread_cleanup>();
+  late final _sqlite3_thread_cleanup =
+      _sqlite3_thread_cleanup_ptr.asFunction<void Function()>();
 
   int sqlite3_memory_alarm(
-    ffi.Pointer<ffi.NativeFunction<_typedefC_71>> arg0,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(
+                    ffi.Pointer<ffi.Void>, sqlite3_int64, ffi.Int32)>>
+        arg0,
     ffi.Pointer<ffi.Void> arg1,
     int arg2,
   ) {
@@ -4466,11 +5102,23 @@
     );
   }
 
-  late final _sqlite3_memory_alarm_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_memory_alarm>>(
-          'sqlite3_memory_alarm');
-  late final _dart_sqlite3_memory_alarm _sqlite3_memory_alarm =
-      _sqlite3_memory_alarm_ptr.asFunction<_dart_sqlite3_memory_alarm>();
+  late final _sqlite3_memory_alarm_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>, sqlite3_int64, ffi.Int32)>>,
+              ffi.Pointer<ffi.Void>,
+              sqlite3_int64)>>('sqlite3_memory_alarm');
+  late final _sqlite3_memory_alarm = _sqlite3_memory_alarm_ptr.asFunction<
+      int Function(
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<ffi.Void>, sqlite3_int64, ffi.Int32)>>,
+          ffi.Pointer<ffi.Void>,
+          int)>();
 
   /// CAPI3REF: Obtaining SQL Values
   /// METHOD: sqlite3_value
@@ -4606,10 +5254,12 @@
     );
   }
 
-  late final _sqlite3_value_blob_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_blob>>('sqlite3_value_blob');
-  late final _dart_sqlite3_value_blob _sqlite3_value_blob =
-      _sqlite3_value_blob_ptr.asFunction<_dart_sqlite3_value_blob>();
+  late final _sqlite3_value_blob_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_value_blob');
+  late final _sqlite3_value_blob = _sqlite3_value_blob_ptr
+      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_value>)>();
 
   double sqlite3_value_double(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4619,11 +5269,11 @@
     );
   }
 
-  late final _sqlite3_value_double_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_double>>(
-          'sqlite3_value_double');
-  late final _dart_sqlite3_value_double _sqlite3_value_double =
-      _sqlite3_value_double_ptr.asFunction<_dart_sqlite3_value_double>();
+  late final _sqlite3_value_double_ptr = _lookup<
+          ffi.NativeFunction<ffi.Double Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_double');
+  late final _sqlite3_value_double = _sqlite3_value_double_ptr
+      .asFunction<double Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_int(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4633,10 +5283,11 @@
     );
   }
 
-  late final _sqlite3_value_int_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_int>>('sqlite3_value_int');
-  late final _dart_sqlite3_value_int _sqlite3_value_int =
-      _sqlite3_value_int_ptr.asFunction<_dart_sqlite3_value_int>();
+  late final _sqlite3_value_int_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_int');
+  late final _sqlite3_value_int = _sqlite3_value_int_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_int64(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4646,11 +5297,12 @@
     );
   }
 
-  late final _sqlite3_value_int64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_int64>>(
-          'sqlite3_value_int64');
-  late final _dart_sqlite3_value_int64 _sqlite3_value_int64 =
-      _sqlite3_value_int64_ptr.asFunction<_dart_sqlite3_value_int64>();
+  late final _sqlite3_value_int64_ptr = _lookup<
+      ffi.NativeFunction<
+          sqlite3_int64 Function(
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_value_int64');
+  late final _sqlite3_value_int64 = _sqlite3_value_int64_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   ffi.Pointer<ffi.Void> sqlite3_value_pointer(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4662,11 +5314,13 @@
     );
   }
 
-  late final _sqlite3_value_pointer_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_pointer>>(
-          'sqlite3_value_pointer');
-  late final _dart_sqlite3_value_pointer _sqlite3_value_pointer =
-      _sqlite3_value_pointer_ptr.asFunction<_dart_sqlite3_value_pointer>();
+  late final _sqlite3_value_pointer_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_value>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_value_pointer');
+  late final _sqlite3_value_pointer = _sqlite3_value_pointer_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(
+          ffi.Pointer<sqlite3_value>, ffi.Pointer<ffi.Int8>)>();
 
   ffi.Pointer<ffi.Uint8> sqlite3_value_text(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4676,10 +5330,12 @@
     );
   }
 
-  late final _sqlite3_value_text_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_text>>('sqlite3_value_text');
-  late final _dart_sqlite3_value_text _sqlite3_value_text =
-      _sqlite3_value_text_ptr.asFunction<_dart_sqlite3_value_text>();
+  late final _sqlite3_value_text_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Uint8> Function(
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_value_text');
+  late final _sqlite3_value_text = _sqlite3_value_text_ptr.asFunction<
+      ffi.Pointer<ffi.Uint8> Function(ffi.Pointer<sqlite3_value>)>();
 
   ffi.Pointer<ffi.Void> sqlite3_value_text16(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4689,11 +5345,12 @@
     );
   }
 
-  late final _sqlite3_value_text16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_text16>>(
-          'sqlite3_value_text16');
-  late final _dart_sqlite3_value_text16 _sqlite3_value_text16 =
-      _sqlite3_value_text16_ptr.asFunction<_dart_sqlite3_value_text16>();
+  late final _sqlite3_value_text16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_value_text16');
+  late final _sqlite3_value_text16 = _sqlite3_value_text16_ptr
+      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_value>)>();
 
   ffi.Pointer<ffi.Void> sqlite3_value_text16le(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4703,11 +5360,12 @@
     );
   }
 
-  late final _sqlite3_value_text16le_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_text16le>>(
-          'sqlite3_value_text16le');
-  late final _dart_sqlite3_value_text16le _sqlite3_value_text16le =
-      _sqlite3_value_text16le_ptr.asFunction<_dart_sqlite3_value_text16le>();
+  late final _sqlite3_value_text16le_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_value_text16le');
+  late final _sqlite3_value_text16le = _sqlite3_value_text16le_ptr
+      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_value>)>();
 
   ffi.Pointer<ffi.Void> sqlite3_value_text16be(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4717,11 +5375,12 @@
     );
   }
 
-  late final _sqlite3_value_text16be_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_text16be>>(
-          'sqlite3_value_text16be');
-  late final _dart_sqlite3_value_text16be _sqlite3_value_text16be =
-      _sqlite3_value_text16be_ptr.asFunction<_dart_sqlite3_value_text16be>();
+  late final _sqlite3_value_text16be_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_value_text16be');
+  late final _sqlite3_value_text16be = _sqlite3_value_text16be_ptr
+      .asFunction<ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_bytes(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4731,11 +5390,11 @@
     );
   }
 
-  late final _sqlite3_value_bytes_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_bytes>>(
-          'sqlite3_value_bytes');
-  late final _dart_sqlite3_value_bytes _sqlite3_value_bytes =
-      _sqlite3_value_bytes_ptr.asFunction<_dart_sqlite3_value_bytes>();
+  late final _sqlite3_value_bytes_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_bytes');
+  late final _sqlite3_value_bytes = _sqlite3_value_bytes_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_bytes16(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4745,11 +5404,11 @@
     );
   }
 
-  late final _sqlite3_value_bytes16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_bytes16>>(
-          'sqlite3_value_bytes16');
-  late final _dart_sqlite3_value_bytes16 _sqlite3_value_bytes16 =
-      _sqlite3_value_bytes16_ptr.asFunction<_dart_sqlite3_value_bytes16>();
+  late final _sqlite3_value_bytes16_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_bytes16');
+  late final _sqlite3_value_bytes16 = _sqlite3_value_bytes16_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_type(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4759,10 +5418,11 @@
     );
   }
 
-  late final _sqlite3_value_type_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_type>>('sqlite3_value_type');
-  late final _dart_sqlite3_value_type _sqlite3_value_type =
-      _sqlite3_value_type_ptr.asFunction<_dart_sqlite3_value_type>();
+  late final _sqlite3_value_type_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_type');
+  late final _sqlite3_value_type = _sqlite3_value_type_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_numeric_type(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4772,12 +5432,11 @@
     );
   }
 
-  late final _sqlite3_value_numeric_type_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_numeric_type>>(
-          'sqlite3_value_numeric_type');
-  late final _dart_sqlite3_value_numeric_type _sqlite3_value_numeric_type =
-      _sqlite3_value_numeric_type_ptr
-          .asFunction<_dart_sqlite3_value_numeric_type>();
+  late final _sqlite3_value_numeric_type_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_numeric_type');
+  late final _sqlite3_value_numeric_type = _sqlite3_value_numeric_type_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_nochange(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4787,11 +5446,11 @@
     );
   }
 
-  late final _sqlite3_value_nochange_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_nochange>>(
-          'sqlite3_value_nochange');
-  late final _dart_sqlite3_value_nochange _sqlite3_value_nochange =
-      _sqlite3_value_nochange_ptr.asFunction<_dart_sqlite3_value_nochange>();
+  late final _sqlite3_value_nochange_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_nochange');
+  late final _sqlite3_value_nochange = _sqlite3_value_nochange_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   int sqlite3_value_frombind(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4801,11 +5460,11 @@
     );
   }
 
-  late final _sqlite3_value_frombind_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_frombind>>(
-          'sqlite3_value_frombind');
-  late final _dart_sqlite3_value_frombind _sqlite3_value_frombind =
-      _sqlite3_value_frombind_ptr.asFunction<_dart_sqlite3_value_frombind>();
+  late final _sqlite3_value_frombind_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_frombind');
+  late final _sqlite3_value_frombind = _sqlite3_value_frombind_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   /// CAPI3REF: Finding The Subtype Of SQL Values
   /// METHOD: sqlite3_value
@@ -4823,11 +5482,11 @@
     );
   }
 
-  late final _sqlite3_value_subtype_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_subtype>>(
-          'sqlite3_value_subtype');
-  late final _dart_sqlite3_value_subtype _sqlite3_value_subtype =
-      _sqlite3_value_subtype_ptr.asFunction<_dart_sqlite3_value_subtype>();
+  late final _sqlite3_value_subtype_ptr = _lookup<
+          ffi.NativeFunction<ffi.Uint32 Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_subtype');
+  late final _sqlite3_value_subtype = _sqlite3_value_subtype_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_value>)>();
 
   /// CAPI3REF: Copy And Free SQL Values
   /// METHOD: sqlite3_value
@@ -4849,10 +5508,12 @@
     );
   }
 
-  late final _sqlite3_value_dup_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_dup>>('sqlite3_value_dup');
-  late final _dart_sqlite3_value_dup _sqlite3_value_dup =
-      _sqlite3_value_dup_ptr.asFunction<_dart_sqlite3_value_dup>();
+  late final _sqlite3_value_dup_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_value> Function(
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_value_dup');
+  late final _sqlite3_value_dup = _sqlite3_value_dup_ptr.asFunction<
+      ffi.Pointer<sqlite3_value> Function(ffi.Pointer<sqlite3_value>)>();
 
   void sqlite3_value_free(
     ffi.Pointer<sqlite3_value> arg0,
@@ -4862,10 +5523,11 @@
     );
   }
 
-  late final _sqlite3_value_free_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_value_free>>('sqlite3_value_free');
-  late final _dart_sqlite3_value_free _sqlite3_value_free =
-      _sqlite3_value_free_ptr.asFunction<_dart_sqlite3_value_free>();
+  late final _sqlite3_value_free_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_value>)>>(
+      'sqlite3_value_free');
+  late final _sqlite3_value_free = _sqlite3_value_free_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_value>)>();
 
   /// CAPI3REF: Obtain Aggregate Function Context
   /// METHOD: sqlite3_context
@@ -4918,12 +5580,13 @@
     );
   }
 
-  late final _sqlite3_aggregate_context_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_aggregate_context>>(
-          'sqlite3_aggregate_context');
-  late final _dart_sqlite3_aggregate_context _sqlite3_aggregate_context =
-      _sqlite3_aggregate_context_ptr
-          .asFunction<_dart_sqlite3_aggregate_context>();
+  late final _sqlite3_aggregate_context_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_context>,
+              ffi.Int32)>>('sqlite3_aggregate_context');
+  late final _sqlite3_aggregate_context =
+      _sqlite3_aggregate_context_ptr.asFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_context>, int)>();
 
   /// CAPI3REF: User Data For Functions
   /// METHOD: sqlite3_context
@@ -4944,10 +5607,12 @@
     );
   }
 
-  late final _sqlite3_user_data_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_user_data>>('sqlite3_user_data');
-  late final _dart_sqlite3_user_data _sqlite3_user_data =
-      _sqlite3_user_data_ptr.asFunction<_dart_sqlite3_user_data>();
+  late final _sqlite3_user_data_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_context>)>>('sqlite3_user_data');
+  late final _sqlite3_user_data = _sqlite3_user_data_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_context>)>();
 
   /// CAPI3REF: Database Connection For Functions
   /// METHOD: sqlite3_context
@@ -4965,12 +5630,13 @@
     );
   }
 
-  late final _sqlite3_context_db_handle_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_context_db_handle>>(
-          'sqlite3_context_db_handle');
-  late final _dart_sqlite3_context_db_handle _sqlite3_context_db_handle =
-      _sqlite3_context_db_handle_ptr
-          .asFunction<_dart_sqlite3_context_db_handle>();
+  late final _sqlite3_context_db_handle_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3> Function(
+              ffi.Pointer<sqlite3_context>)>>('sqlite3_context_db_handle');
+  late final _sqlite3_context_db_handle =
+      _sqlite3_context_db_handle_ptr.asFunction<
+          ffi.Pointer<sqlite3> Function(ffi.Pointer<sqlite3_context>)>();
 
   /// CAPI3REF: Function Auxiliary Data
   /// METHOD: sqlite3_context
@@ -5037,17 +5703,19 @@
     );
   }
 
-  late final _sqlite3_get_auxdata_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_get_auxdata>>(
-          'sqlite3_get_auxdata');
-  late final _dart_sqlite3_get_auxdata _sqlite3_get_auxdata =
-      _sqlite3_get_auxdata_ptr.asFunction<_dart_sqlite3_get_auxdata>();
+  late final _sqlite3_get_auxdata_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_context>, ffi.Int32)>>('sqlite3_get_auxdata');
+  late final _sqlite3_get_auxdata = _sqlite3_get_auxdata_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(ffi.Pointer<sqlite3_context>, int)>();
 
   void sqlite3_set_auxdata(
     ffi.Pointer<sqlite3_context> arg0,
     int N,
     ffi.Pointer<ffi.Void> arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_72>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_set_auxdata(
       arg0,
@@ -5057,11 +5725,23 @@
     );
   }
 
-  late final _sqlite3_set_auxdata_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_set_auxdata>>(
-          'sqlite3_set_auxdata');
-  late final _dart_sqlite3_set_auxdata _sqlite3_set_auxdata =
-      _sqlite3_set_auxdata_ptr.asFunction<_dart_sqlite3_set_auxdata>();
+  late final _sqlite3_set_auxdata_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_set_auxdata');
+  late final _sqlite3_set_auxdata = _sqlite3_set_auxdata_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          int,
+          ffi.Pointer<ffi.Void>,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   /// CAPI3REF: Setting The Result Of An SQL Function
   /// METHOD: sqlite3_context
@@ -5211,7 +5891,8 @@
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Void> arg1,
     int arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_73>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_result_blob(
       arg0,
@@ -5221,17 +5902,30 @@
     );
   }
 
-  late final _sqlite3_result_blob_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_blob>>(
-          'sqlite3_result_blob');
-  late final _dart_sqlite3_result_blob _sqlite3_result_blob =
-      _sqlite3_result_blob_ptr.asFunction<_dart_sqlite3_result_blob>();
+  late final _sqlite3_result_blob_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_result_blob');
+  late final _sqlite3_result_blob = _sqlite3_result_blob_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   void sqlite3_result_blob64(
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Void> arg1,
     int arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_74>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_result_blob64(
       arg0,
@@ -5241,11 +5935,23 @@
     );
   }
 
-  late final _sqlite3_result_blob64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_blob64>>(
-          'sqlite3_result_blob64');
-  late final _dart_sqlite3_result_blob64 _sqlite3_result_blob64 =
-      _sqlite3_result_blob64_ptr.asFunction<_dart_sqlite3_result_blob64>();
+  late final _sqlite3_result_blob64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>,
+              ffi.Pointer<ffi.Void>,
+              sqlite3_uint64,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_result_blob64');
+  late final _sqlite3_result_blob64 = _sqlite3_result_blob64_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   void sqlite3_result_double(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5257,11 +5963,12 @@
     );
   }
 
-  late final _sqlite3_result_double_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_double>>(
-          'sqlite3_result_double');
-  late final _dart_sqlite3_result_double _sqlite3_result_double =
-      _sqlite3_result_double_ptr.asFunction<_dart_sqlite3_result_double>();
+  late final _sqlite3_result_double_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>,
+              ffi.Double)>>('sqlite3_result_double');
+  late final _sqlite3_result_double = _sqlite3_result_double_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>, double)>();
 
   void sqlite3_result_error(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5275,11 +5982,13 @@
     );
   }
 
-  late final _sqlite3_result_error_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_error>>(
-          'sqlite3_result_error');
-  late final _dart_sqlite3_result_error _sqlite3_result_error =
-      _sqlite3_result_error_ptr.asFunction<_dart_sqlite3_result_error>();
+  late final _sqlite3_result_error_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32)>>('sqlite3_result_error');
+  late final _sqlite3_result_error = _sqlite3_result_error_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>, ffi.Pointer<ffi.Int8>, int)>();
 
   void sqlite3_result_error16(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5293,11 +6002,13 @@
     );
   }
 
-  late final _sqlite3_result_error16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_error16>>(
-          'sqlite3_result_error16');
-  late final _dart_sqlite3_result_error16 _sqlite3_result_error16 =
-      _sqlite3_result_error16_ptr.asFunction<_dart_sqlite3_result_error16>();
+  late final _sqlite3_result_error16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>, ffi.Pointer<ffi.Void>,
+              ffi.Int32)>>('sqlite3_result_error16');
+  late final _sqlite3_result_error16 = _sqlite3_result_error16_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>, ffi.Pointer<ffi.Void>, int)>();
 
   void sqlite3_result_error_toobig(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5307,12 +6018,11 @@
     );
   }
 
-  late final _sqlite3_result_error_toobig_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_error_toobig>>(
-          'sqlite3_result_error_toobig');
-  late final _dart_sqlite3_result_error_toobig _sqlite3_result_error_toobig =
-      _sqlite3_result_error_toobig_ptr
-          .asFunction<_dart_sqlite3_result_error_toobig>();
+  late final _sqlite3_result_error_toobig_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>(
+      'sqlite3_result_error_toobig');
+  late final _sqlite3_result_error_toobig = _sqlite3_result_error_toobig_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>)>();
 
   void sqlite3_result_error_nomem(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5322,12 +6032,11 @@
     );
   }
 
-  late final _sqlite3_result_error_nomem_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_error_nomem>>(
-          'sqlite3_result_error_nomem');
-  late final _dart_sqlite3_result_error_nomem _sqlite3_result_error_nomem =
-      _sqlite3_result_error_nomem_ptr
-          .asFunction<_dart_sqlite3_result_error_nomem>();
+  late final _sqlite3_result_error_nomem_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>(
+      'sqlite3_result_error_nomem');
+  late final _sqlite3_result_error_nomem = _sqlite3_result_error_nomem_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>)>();
 
   void sqlite3_result_error_code(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5339,12 +6048,12 @@
     );
   }
 
-  late final _sqlite3_result_error_code_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_error_code>>(
-          'sqlite3_result_error_code');
-  late final _dart_sqlite3_result_error_code _sqlite3_result_error_code =
-      _sqlite3_result_error_code_ptr
-          .asFunction<_dart_sqlite3_result_error_code>();
+  late final _sqlite3_result_error_code_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>,
+              ffi.Int32)>>('sqlite3_result_error_code');
+  late final _sqlite3_result_error_code = _sqlite3_result_error_code_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>, int)>();
 
   void sqlite3_result_int(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5356,10 +6065,12 @@
     );
   }
 
-  late final _sqlite3_result_int_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_int>>('sqlite3_result_int');
-  late final _dart_sqlite3_result_int _sqlite3_result_int =
-      _sqlite3_result_int_ptr.asFunction<_dart_sqlite3_result_int>();
+  late final _sqlite3_result_int_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>, ffi.Int32)>>('sqlite3_result_int');
+  late final _sqlite3_result_int = _sqlite3_result_int_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>, int)>();
 
   void sqlite3_result_int64(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5371,11 +6082,12 @@
     );
   }
 
-  late final _sqlite3_result_int64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_int64>>(
-          'sqlite3_result_int64');
-  late final _dart_sqlite3_result_int64 _sqlite3_result_int64 =
-      _sqlite3_result_int64_ptr.asFunction<_dart_sqlite3_result_int64>();
+  late final _sqlite3_result_int64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>,
+              sqlite3_int64)>>('sqlite3_result_int64');
+  late final _sqlite3_result_int64 = _sqlite3_result_int64_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>, int)>();
 
   void sqlite3_result_null(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5385,17 +6097,18 @@
     );
   }
 
-  late final _sqlite3_result_null_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_null>>(
-          'sqlite3_result_null');
-  late final _dart_sqlite3_result_null _sqlite3_result_null =
-      _sqlite3_result_null_ptr.asFunction<_dart_sqlite3_result_null>();
+  late final _sqlite3_result_null_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_context>)>>(
+      'sqlite3_result_null');
+  late final _sqlite3_result_null = _sqlite3_result_null_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>)>();
 
   void sqlite3_result_text(
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Int8> arg1,
     int arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_75>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_result_text(
       arg0,
@@ -5405,17 +6118,30 @@
     );
   }
 
-  late final _sqlite3_result_text_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_text>>(
-          'sqlite3_result_text');
-  late final _dart_sqlite3_result_text _sqlite3_result_text =
-      _sqlite3_result_text_ptr.asFunction<_dart_sqlite3_result_text>();
+  late final _sqlite3_result_text_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_result_text');
+  late final _sqlite3_result_text = _sqlite3_result_text_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   void sqlite3_result_text64(
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Int8> arg1,
     int arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_76>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
     int encoding,
   ) {
     return _sqlite3_result_text64(
@@ -5427,17 +6153,30 @@
     );
   }
 
-  late final _sqlite3_result_text64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_text64>>(
-          'sqlite3_result_text64');
-  late final _dart_sqlite3_result_text64 _sqlite3_result_text64 =
-      _sqlite3_result_text64_ptr.asFunction<_dart_sqlite3_result_text64>();
+  late final _sqlite3_result_text64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>,
+              ffi.Pointer<ffi.Int8>,
+              sqlite3_uint64,
+              ffi.Pointer<
+                  ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+              ffi.Uint8)>>('sqlite3_result_text64');
+  late final _sqlite3_result_text64 = _sqlite3_result_text64_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+          int)>();
 
   void sqlite3_result_text16(
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Void> arg1,
     int arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_77>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_result_text16(
       arg0,
@@ -5447,17 +6186,30 @@
     );
   }
 
-  late final _sqlite3_result_text16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_text16>>(
-          'sqlite3_result_text16');
-  late final _dart_sqlite3_result_text16 _sqlite3_result_text16 =
-      _sqlite3_result_text16_ptr.asFunction<_dart_sqlite3_result_text16>();
+  late final _sqlite3_result_text16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_result_text16');
+  late final _sqlite3_result_text16 = _sqlite3_result_text16_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   void sqlite3_result_text16le(
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Void> arg1,
     int arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_78>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_result_text16le(
       arg0,
@@ -5467,17 +6219,30 @@
     );
   }
 
-  late final _sqlite3_result_text16le_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_text16le>>(
-          'sqlite3_result_text16le');
-  late final _dart_sqlite3_result_text16le _sqlite3_result_text16le =
-      _sqlite3_result_text16le_ptr.asFunction<_dart_sqlite3_result_text16le>();
+  late final _sqlite3_result_text16le_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  ffi.Pointer<sqlite3_context>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Int32,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_result_text16le');
+  late final _sqlite3_result_text16le = _sqlite3_result_text16le_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   void sqlite3_result_text16be(
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Void> arg1,
     int arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_79>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_result_text16be(
       arg0,
@@ -5487,11 +6252,23 @@
     );
   }
 
-  late final _sqlite3_result_text16be_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_text16be>>(
-          'sqlite3_result_text16be');
-  late final _dart_sqlite3_result_text16be _sqlite3_result_text16be =
-      _sqlite3_result_text16be_ptr.asFunction<_dart_sqlite3_result_text16be>();
+  late final _sqlite3_result_text16be_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  ffi.Pointer<sqlite3_context>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Int32,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_result_text16be');
+  late final _sqlite3_result_text16be = _sqlite3_result_text16be_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Void>,
+          int,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   void sqlite3_result_value(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5503,17 +6280,20 @@
     );
   }
 
-  late final _sqlite3_result_value_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_value>>(
-          'sqlite3_result_value');
-  late final _dart_sqlite3_result_value _sqlite3_result_value =
-      _sqlite3_result_value_ptr.asFunction<_dart_sqlite3_result_value>();
+  late final _sqlite3_result_value_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>,
+              ffi.Pointer<sqlite3_value>)>>('sqlite3_result_value');
+  late final _sqlite3_result_value = _sqlite3_result_value_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>, ffi.Pointer<sqlite3_value>)>();
 
   void sqlite3_result_pointer(
     ffi.Pointer<sqlite3_context> arg0,
     ffi.Pointer<ffi.Void> arg1,
     ffi.Pointer<ffi.Int8> arg2,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_80>> arg3,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg3,
   ) {
     return _sqlite3_result_pointer(
       arg0,
@@ -5523,11 +6303,23 @@
     );
   }
 
-  late final _sqlite3_result_pointer_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_pointer>>(
-          'sqlite3_result_pointer');
-  late final _dart_sqlite3_result_pointer _sqlite3_result_pointer =
-      _sqlite3_result_pointer_ptr.asFunction<_dart_sqlite3_result_pointer>();
+  late final _sqlite3_result_pointer_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_context>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>)>>)>>('sqlite3_result_pointer');
+  late final _sqlite3_result_pointer = _sqlite3_result_pointer_ptr.asFunction<
+      void Function(
+          ffi.Pointer<sqlite3_context>,
+          ffi.Pointer<ffi.Void>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   void sqlite3_result_zeroblob(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5539,11 +6331,12 @@
     );
   }
 
-  late final _sqlite3_result_zeroblob_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_zeroblob>>(
-          'sqlite3_result_zeroblob');
-  late final _dart_sqlite3_result_zeroblob _sqlite3_result_zeroblob =
-      _sqlite3_result_zeroblob_ptr.asFunction<_dart_sqlite3_result_zeroblob>();
+  late final _sqlite3_result_zeroblob_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>,
+              ffi.Int32)>>('sqlite3_result_zeroblob');
+  late final _sqlite3_result_zeroblob = _sqlite3_result_zeroblob_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>, int)>();
 
   int sqlite3_result_zeroblob64(
     ffi.Pointer<sqlite3_context> arg0,
@@ -5555,12 +6348,12 @@
     );
   }
 
-  late final _sqlite3_result_zeroblob64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_zeroblob64>>(
-          'sqlite3_result_zeroblob64');
-  late final _dart_sqlite3_result_zeroblob64 _sqlite3_result_zeroblob64 =
-      _sqlite3_result_zeroblob64_ptr
-          .asFunction<_dart_sqlite3_result_zeroblob64>();
+  late final _sqlite3_result_zeroblob64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_context>,
+              sqlite3_uint64)>>('sqlite3_result_zeroblob64');
+  late final _sqlite3_result_zeroblob64 = _sqlite3_result_zeroblob64_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_context>, int)>();
 
   /// CAPI3REF: Setting The Subtype Of An SQL Function
   /// METHOD: sqlite3_context
@@ -5582,11 +6375,12 @@
     );
   }
 
-  late final _sqlite3_result_subtype_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_result_subtype>>(
-          'sqlite3_result_subtype');
-  late final _dart_sqlite3_result_subtype _sqlite3_result_subtype =
-      _sqlite3_result_subtype_ptr.asFunction<_dart_sqlite3_result_subtype>();
+  late final _sqlite3_result_subtype_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_context>,
+              ffi.Uint32)>>('sqlite3_result_subtype');
+  late final _sqlite3_result_subtype = _sqlite3_result_subtype_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_context>, int)>();
 
   /// CAPI3REF: Define New Collating Sequences
   /// METHOD: sqlite3
@@ -5672,7 +6466,11 @@
     ffi.Pointer<ffi.Int8> zName,
     int eTextRep,
     ffi.Pointer<ffi.Void> pArg,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_81>> xCompare,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(ffi.Pointer<ffi.Void>, ffi.Int32,
+                    ffi.Pointer<ffi.Void>, ffi.Int32, ffi.Pointer<ffi.Void>)>>
+        xCompare,
   ) {
     return _sqlite3_create_collation(
       arg0,
@@ -5683,20 +6481,50 @@
     );
   }
 
-  late final _sqlite3_create_collation_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_collation>>(
-          'sqlite3_create_collation');
-  late final _dart_sqlite3_create_collation _sqlite3_create_collation =
-      _sqlite3_create_collation_ptr
-          .asFunction<_dart_sqlite3_create_collation>();
+  late final _sqlite3_create_collation_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3>,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Int32,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Int32 Function(
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_create_collation');
+  late final _sqlite3_create_collation =
+      _sqlite3_create_collation_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              int,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_create_collation_v2(
     ffi.Pointer<sqlite3> arg0,
     ffi.Pointer<ffi.Int8> zName,
     int eTextRep,
     ffi.Pointer<ffi.Void> pArg,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_82>> xCompare,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_83>> xDestroy,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(ffi.Pointer<ffi.Void>, ffi.Int32,
+                    ffi.Pointer<ffi.Void>, ffi.Int32, ffi.Pointer<ffi.Void>)>>
+        xCompare,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        xDestroy,
   ) {
     return _sqlite3_create_collation_v2(
       arg0,
@@ -5708,19 +6536,54 @@
     );
   }
 
-  late final _sqlite3_create_collation_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_collation_v2>>(
-          'sqlite3_create_collation_v2');
-  late final _dart_sqlite3_create_collation_v2 _sqlite3_create_collation_v2 =
-      _sqlite3_create_collation_v2_ptr
-          .asFunction<_dart_sqlite3_create_collation_v2>();
+  late final _sqlite3_create_collation_v2_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3>,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Int32,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Int32 Function(
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Void>)>>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_create_collation_v2');
+  late final _sqlite3_create_collation_v2 =
+      _sqlite3_create_collation_v2_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              int,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Void>)>>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   int sqlite3_create_collation16(
     ffi.Pointer<sqlite3> arg0,
     ffi.Pointer<ffi.Void> zName,
     int eTextRep,
     ffi.Pointer<ffi.Void> pArg,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_84>> xCompare,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(ffi.Pointer<ffi.Void>, ffi.Int32,
+                    ffi.Pointer<ffi.Void>, ffi.Int32, ffi.Pointer<ffi.Void>)>>
+        xCompare,
   ) {
     return _sqlite3_create_collation16(
       arg0,
@@ -5731,12 +6594,37 @@
     );
   }
 
-  late final _sqlite3_create_collation16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_collation16>>(
-          'sqlite3_create_collation16');
-  late final _dart_sqlite3_create_collation16 _sqlite3_create_collation16 =
-      _sqlite3_create_collation16_ptr
-          .asFunction<_dart_sqlite3_create_collation16>();
+  late final _sqlite3_create_collation16_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Int32,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Int32 Function(
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_create_collation16');
+  late final _sqlite3_create_collation16 =
+      _sqlite3_create_collation16_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              int,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Void>)>>)>();
 
   /// CAPI3REF: Collation Needed Callbacks
   /// METHOD: sqlite3
@@ -5766,7 +6654,11 @@
   int sqlite3_collation_needed(
     ffi.Pointer<sqlite3> arg0,
     ffi.Pointer<ffi.Void> arg1,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_85>> arg2,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Pointer<sqlite3>,
+                    ffi.Int32, ffi.Pointer<ffi.Int8>)>>
+        arg2,
   ) {
     return _sqlite3_collation_needed(
       arg0,
@@ -5775,17 +6667,40 @@
     );
   }
 
-  late final _sqlite3_collation_needed_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_collation_needed>>(
-          'sqlite3_collation_needed');
-  late final _dart_sqlite3_collation_needed _sqlite3_collation_needed =
-      _sqlite3_collation_needed_ptr
-          .asFunction<_dart_sqlite3_collation_needed>();
+  late final _sqlite3_collation_needed_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Pointer<sqlite3>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Int8>)>>)>>(
+      'sqlite3_collation_needed');
+  late final _sqlite3_collation_needed =
+      _sqlite3_collation_needed_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Pointer<sqlite3>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Int8>)>>)>();
 
   int sqlite3_collation_needed16(
     ffi.Pointer<sqlite3> arg0,
     ffi.Pointer<ffi.Void> arg1,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_86>> arg2,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Pointer<sqlite3>,
+                    ffi.Int32, ffi.Pointer<ffi.Void>)>>
+        arg2,
   ) {
     return _sqlite3_collation_needed16(
       arg0,
@@ -5794,12 +6709,31 @@
     );
   }
 
-  late final _sqlite3_collation_needed16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_collation_needed16>>(
-          'sqlite3_collation_needed16');
-  late final _dart_sqlite3_collation_needed16 _sqlite3_collation_needed16 =
-      _sqlite3_collation_needed16_ptr
-          .asFunction<_dart_sqlite3_collation_needed16>();
+  late final _sqlite3_collation_needed16_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(
+                              ffi.Pointer<ffi.Void>,
+                              ffi.Pointer<sqlite3>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_collation_needed16');
+  late final _sqlite3_collation_needed16 =
+      _sqlite3_collation_needed16_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Pointer<sqlite3>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Void>)>>)>();
 
   /// CAPI3REF: Suspend Execution For A Short Time
   ///
@@ -5825,9 +6759,10 @@
   }
 
   late final _sqlite3_sleep_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_sleep>>('sqlite3_sleep');
-  late final _dart_sqlite3_sleep _sqlite3_sleep =
-      _sqlite3_sleep_ptr.asFunction<_dart_sqlite3_sleep>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>(
+          'sqlite3_sleep');
+  late final _sqlite3_sleep =
+      _sqlite3_sleep_ptr.asFunction<int Function(int)>();
 
   /// CAPI3REF: Name Of The Folder Holding Temporary Files
   ///
@@ -5961,12 +6896,12 @@
     );
   }
 
-  late final _sqlite3_win32_set_directory_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_win32_set_directory>>(
-          'sqlite3_win32_set_directory');
-  late final _dart_sqlite3_win32_set_directory _sqlite3_win32_set_directory =
-      _sqlite3_win32_set_directory_ptr
-          .asFunction<_dart_sqlite3_win32_set_directory>();
+  late final _sqlite3_win32_set_directory_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Uint64,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_win32_set_directory');
+  late final _sqlite3_win32_set_directory = _sqlite3_win32_set_directory_ptr
+      .asFunction<int Function(int, ffi.Pointer<ffi.Void>)>();
 
   int sqlite3_win32_set_directory8(
     int type,
@@ -5978,12 +6913,12 @@
     );
   }
 
-  late final _sqlite3_win32_set_directory8_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_win32_set_directory8>>(
-          'sqlite3_win32_set_directory8');
-  late final _dart_sqlite3_win32_set_directory8 _sqlite3_win32_set_directory8 =
-      _sqlite3_win32_set_directory8_ptr
-          .asFunction<_dart_sqlite3_win32_set_directory8>();
+  late final _sqlite3_win32_set_directory8_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Uint64,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_win32_set_directory8');
+  late final _sqlite3_win32_set_directory8 = _sqlite3_win32_set_directory8_ptr
+      .asFunction<int Function(int, ffi.Pointer<ffi.Int8>)>();
 
   int sqlite3_win32_set_directory16(
     int type,
@@ -5995,12 +6930,12 @@
     );
   }
 
-  late final _sqlite3_win32_set_directory16_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_win32_set_directory16>>(
-          'sqlite3_win32_set_directory16');
-  late final _dart_sqlite3_win32_set_directory16
-      _sqlite3_win32_set_directory16 = _sqlite3_win32_set_directory16_ptr
-          .asFunction<_dart_sqlite3_win32_set_directory16>();
+  late final _sqlite3_win32_set_directory16_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Uint64,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_win32_set_directory16');
+  late final _sqlite3_win32_set_directory16 = _sqlite3_win32_set_directory16_ptr
+      .asFunction<int Function(int, ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Test For Auto-Commit Mode
   /// KEYWORDS: {autocommit mode}
@@ -6031,10 +6966,10 @@
   }
 
   late final _sqlite3_get_autocommit_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_get_autocommit>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_get_autocommit');
-  late final _dart_sqlite3_get_autocommit _sqlite3_get_autocommit =
-      _sqlite3_get_autocommit_ptr.asFunction<_dart_sqlite3_get_autocommit>();
+  late final _sqlite3_get_autocommit = _sqlite3_get_autocommit_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Find The Database Handle Of A Prepared Statement
   /// METHOD: sqlite3_stmt
@@ -6053,10 +6988,12 @@
     );
   }
 
-  late final _sqlite3_db_handle_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_handle>>('sqlite3_db_handle');
-  late final _dart_sqlite3_db_handle _sqlite3_db_handle =
-      _sqlite3_db_handle_ptr.asFunction<_dart_sqlite3_db_handle>();
+  late final _sqlite3_db_handle_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3> Function(
+              ffi.Pointer<sqlite3_stmt>)>>('sqlite3_db_handle');
+  late final _sqlite3_db_handle = _sqlite3_db_handle_ptr
+      .asFunction<ffi.Pointer<sqlite3> Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Return The Filename For A Database Connection
   /// METHOD: sqlite3
@@ -6096,11 +7033,13 @@
     );
   }
 
-  late final _sqlite3_db_filename_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_filename>>(
-          'sqlite3_db_filename');
-  late final _dart_sqlite3_db_filename _sqlite3_db_filename =
-      _sqlite3_db_filename_ptr.asFunction<_dart_sqlite3_db_filename>();
+  late final _sqlite3_db_filename_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_db_filename');
+  late final _sqlite3_db_filename = _sqlite3_db_filename_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(
+          ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Determine if a database is read-only
   /// METHOD: sqlite3
@@ -6118,11 +7057,12 @@
     );
   }
 
-  late final _sqlite3_db_readonly_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_readonly>>(
-          'sqlite3_db_readonly');
-  late final _dart_sqlite3_db_readonly _sqlite3_db_readonly =
-      _sqlite3_db_readonly_ptr.asFunction<_dart_sqlite3_db_readonly>();
+  late final _sqlite3_db_readonly_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_db_readonly');
+  late final _sqlite3_db_readonly = _sqlite3_db_readonly_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Find the next prepared statement
   /// METHOD: sqlite3
@@ -6146,10 +7086,13 @@
     );
   }
 
-  late final _sqlite3_next_stmt_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_next_stmt>>('sqlite3_next_stmt');
-  late final _dart_sqlite3_next_stmt _sqlite3_next_stmt =
-      _sqlite3_next_stmt_ptr.asFunction<_dart_sqlite3_next_stmt>();
+  late final _sqlite3_next_stmt_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_stmt> Function(ffi.Pointer<sqlite3>,
+              ffi.Pointer<sqlite3_stmt>)>>('sqlite3_next_stmt');
+  late final _sqlite3_next_stmt = _sqlite3_next_stmt_ptr.asFunction<
+      ffi.Pointer<sqlite3_stmt> Function(
+          ffi.Pointer<sqlite3>, ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Commit And Rollback Notification Callbacks
   /// METHOD: sqlite3
@@ -6198,7 +7141,8 @@
   /// See also the [sqlite3_update_hook()] interface.
   ffi.Pointer<ffi.Void> sqlite3_commit_hook(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_87>> arg1,
+    ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>>
+        arg1,
     ffi.Pointer<ffi.Void> arg2,
   ) {
     return _sqlite3_commit_hook(
@@ -6208,15 +7152,25 @@
     );
   }
 
-  late final _sqlite3_commit_hook_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_commit_hook>>(
-          'sqlite3_commit_hook');
-  late final _dart_sqlite3_commit_hook _sqlite3_commit_hook =
-      _sqlite3_commit_hook_ptr.asFunction<_dart_sqlite3_commit_hook>();
+  late final _sqlite3_commit_hook_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(ffi.Pointer<ffi.Void>)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_commit_hook');
+  late final _sqlite3_commit_hook = _sqlite3_commit_hook_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   ffi.Pointer<ffi.Void> sqlite3_rollback_hook(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_88>> arg1,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        arg1,
     ffi.Pointer<ffi.Void> arg2,
   ) {
     return _sqlite3_rollback_hook(
@@ -6226,11 +7180,19 @@
     );
   }
 
-  late final _sqlite3_rollback_hook_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_rollback_hook>>(
-          'sqlite3_rollback_hook');
-  late final _dart_sqlite3_rollback_hook _sqlite3_rollback_hook =
-      _sqlite3_rollback_hook_ptr.asFunction<_dart_sqlite3_rollback_hook>();
+  late final _sqlite3_rollback_hook_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_rollback_hook');
+  late final _sqlite3_rollback_hook = _sqlite3_rollback_hook_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Data Change Notification Callbacks
   /// METHOD: sqlite3
@@ -6281,7 +7243,15 @@
   /// and [sqlite3_preupdate_hook()] interfaces.
   ffi.Pointer<ffi.Void> sqlite3_update_hook(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_89>> arg1,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(
+                    ffi.Pointer<ffi.Void>,
+                    ffi.Int32,
+                    ffi.Pointer<ffi.Int8>,
+                    ffi.Pointer<ffi.Int8>,
+                    sqlite3_int64)>>
+        arg1,
     ffi.Pointer<ffi.Void> arg2,
   ) {
     return _sqlite3_update_hook(
@@ -6291,11 +7261,31 @@
     );
   }
 
-  late final _sqlite3_update_hook_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_update_hook>>(
-          'sqlite3_update_hook');
-  late final _dart_sqlite3_update_hook _sqlite3_update_hook =
-      _sqlite3_update_hook_ptr.asFunction<_dart_sqlite3_update_hook>();
+  late final _sqlite3_update_hook_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Int8>,
+                          ffi.Pointer<ffi.Int8>,
+                          sqlite3_int64)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_update_hook');
+  late final _sqlite3_update_hook = _sqlite3_update_hook_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<ffi.Void>,
+                      ffi.Int32,
+                      ffi.Pointer<ffi.Int8>,
+                      ffi.Pointer<ffi.Int8>,
+                      sqlite3_int64)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Enable Or Disable Shared Pager Cache
   ///
@@ -6343,11 +7333,10 @@
   }
 
   late final _sqlite3_enable_shared_cache_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_enable_shared_cache>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>(
           'sqlite3_enable_shared_cache');
-  late final _dart_sqlite3_enable_shared_cache _sqlite3_enable_shared_cache =
-      _sqlite3_enable_shared_cache_ptr
-          .asFunction<_dart_sqlite3_enable_shared_cache>();
+  late final _sqlite3_enable_shared_cache =
+      _sqlite3_enable_shared_cache_ptr.asFunction<int Function(int)>();
 
   /// CAPI3REF: Attempt To Free Heap Memory
   ///
@@ -6370,10 +7359,10 @@
   }
 
   late final _sqlite3_release_memory_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_release_memory>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>(
           'sqlite3_release_memory');
-  late final _dart_sqlite3_release_memory _sqlite3_release_memory =
-      _sqlite3_release_memory_ptr.asFunction<_dart_sqlite3_release_memory>();
+  late final _sqlite3_release_memory =
+      _sqlite3_release_memory_ptr.asFunction<int Function(int)>();
 
   /// CAPI3REF: Free Memory Used By A Database Connection
   /// METHOD: sqlite3
@@ -6394,11 +7383,10 @@
   }
 
   late final _sqlite3_db_release_memory_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_release_memory>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_db_release_memory');
-  late final _dart_sqlite3_db_release_memory _sqlite3_db_release_memory =
-      _sqlite3_db_release_memory_ptr
-          .asFunction<_dart_sqlite3_db_release_memory>();
+  late final _sqlite3_db_release_memory = _sqlite3_db_release_memory_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Impose A Limit On Heap Size
   ///
@@ -6471,11 +7459,10 @@
   }
 
   late final _sqlite3_soft_heap_limit64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_soft_heap_limit64>>(
+      _lookup<ffi.NativeFunction<sqlite3_int64 Function(sqlite3_int64)>>(
           'sqlite3_soft_heap_limit64');
-  late final _dart_sqlite3_soft_heap_limit64 _sqlite3_soft_heap_limit64 =
-      _sqlite3_soft_heap_limit64_ptr
-          .asFunction<_dart_sqlite3_soft_heap_limit64>();
+  late final _sqlite3_soft_heap_limit64 =
+      _sqlite3_soft_heap_limit64_ptr.asFunction<int Function(int)>();
 
   int sqlite3_hard_heap_limit64(
     int N,
@@ -6486,11 +7473,10 @@
   }
 
   late final _sqlite3_hard_heap_limit64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_hard_heap_limit64>>(
+      _lookup<ffi.NativeFunction<sqlite3_int64 Function(sqlite3_int64)>>(
           'sqlite3_hard_heap_limit64');
-  late final _dart_sqlite3_hard_heap_limit64 _sqlite3_hard_heap_limit64 =
-      _sqlite3_hard_heap_limit64_ptr
-          .asFunction<_dart_sqlite3_hard_heap_limit64>();
+  late final _sqlite3_hard_heap_limit64 =
+      _sqlite3_hard_heap_limit64_ptr.asFunction<int Function(int)>();
 
   /// CAPI3REF: Deprecated Soft Heap Limit Interface
   /// DEPRECATED
@@ -6508,10 +7494,10 @@
   }
 
   late final _sqlite3_soft_heap_limit_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_soft_heap_limit>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Int32)>>(
           'sqlite3_soft_heap_limit');
-  late final _dart_sqlite3_soft_heap_limit _sqlite3_soft_heap_limit =
-      _sqlite3_soft_heap_limit_ptr.asFunction<_dart_sqlite3_soft_heap_limit>();
+  late final _sqlite3_soft_heap_limit =
+      _sqlite3_soft_heap_limit_ptr.asFunction<void Function(int)>();
 
   /// CAPI3REF: Extract Metadata About A Column Of A Table
   /// METHOD: sqlite3
@@ -6604,12 +7590,30 @@
     );
   }
 
-  late final _sqlite3_table_column_metadata_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_table_column_metadata>>(
-          'sqlite3_table_column_metadata');
-  late final _dart_sqlite3_table_column_metadata
-      _sqlite3_table_column_metadata = _sqlite3_table_column_metadata_ptr
-          .asFunction<_dart_sqlite3_table_column_metadata>();
+  late final _sqlite3_table_column_metadata_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>)>>('sqlite3_table_column_metadata');
+  late final _sqlite3_table_column_metadata =
+      _sqlite3_table_column_metadata_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>)>();
 
   /// CAPI3REF: Load An Extension
   /// METHOD: sqlite3
@@ -6667,11 +7671,16 @@
     );
   }
 
-  late final _sqlite3_load_extension_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_load_extension>>(
-          'sqlite3_load_extension');
-  late final _dart_sqlite3_load_extension _sqlite3_load_extension =
-      _sqlite3_load_extension_ptr.asFunction<_dart_sqlite3_load_extension>();
+  late final _sqlite3_load_extension_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_load_extension');
+  late final _sqlite3_load_extension = _sqlite3_load_extension_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   /// CAPI3REF: Enable Or Disable Extension Loading
   /// METHOD: sqlite3
@@ -6706,12 +7715,12 @@
     );
   }
 
-  late final _sqlite3_enable_load_extension_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_enable_load_extension>>(
-          'sqlite3_enable_load_extension');
-  late final _dart_sqlite3_enable_load_extension
-      _sqlite3_enable_load_extension = _sqlite3_enable_load_extension_ptr
-          .asFunction<_dart_sqlite3_enable_load_extension>();
+  late final _sqlite3_enable_load_extension_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>,
+              ffi.Int32)>>('sqlite3_enable_load_extension');
+  late final _sqlite3_enable_load_extension = _sqlite3_enable_load_extension_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, int)>();
 
   /// CAPI3REF: Automatically Load Statically Linked Extensions
   ///
@@ -6748,18 +7757,20 @@
   /// See also: [sqlite3_reset_auto_extension()]
   /// and [sqlite3_cancel_auto_extension()]
   int sqlite3_auto_extension(
-    ffi.Pointer<ffi.NativeFunction<_typedefC_90>> xEntryPoint,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> xEntryPoint,
   ) {
     return _sqlite3_auto_extension(
       xEntryPoint,
     );
   }
 
-  late final _sqlite3_auto_extension_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_auto_extension>>(
-          'sqlite3_auto_extension');
-  late final _dart_sqlite3_auto_extension _sqlite3_auto_extension =
-      _sqlite3_auto_extension_ptr.asFunction<_dart_sqlite3_auto_extension>();
+  late final _sqlite3_auto_extension_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>>(
+      'sqlite3_auto_extension');
+  late final _sqlite3_auto_extension = _sqlite3_auto_extension_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>();
 
   /// CAPI3REF: Cancel Automatic Extension Loading
   ///
@@ -6770,19 +7781,21 @@
   /// unregistered and it returns 0 if X was not on the list of initialization
   /// routines.
   int sqlite3_cancel_auto_extension(
-    ffi.Pointer<ffi.NativeFunction<_typedefC_91>> xEntryPoint,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> xEntryPoint,
   ) {
     return _sqlite3_cancel_auto_extension(
       xEntryPoint,
     );
   }
 
-  late final _sqlite3_cancel_auto_extension_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_cancel_auto_extension>>(
-          'sqlite3_cancel_auto_extension');
-  late final _dart_sqlite3_cancel_auto_extension
-      _sqlite3_cancel_auto_extension = _sqlite3_cancel_auto_extension_ptr
-          .asFunction<_dart_sqlite3_cancel_auto_extension>();
+  late final _sqlite3_cancel_auto_extension_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>>(
+      'sqlite3_cancel_auto_extension');
+  late final _sqlite3_cancel_auto_extension =
+      _sqlite3_cancel_auto_extension_ptr.asFunction<
+          int Function(ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>();
 
   /// CAPI3REF: Reset Automatic Extension Loading
   ///
@@ -6793,11 +7806,10 @@
   }
 
   late final _sqlite3_reset_auto_extension_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_reset_auto_extension>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function()>>(
           'sqlite3_reset_auto_extension');
-  late final _dart_sqlite3_reset_auto_extension _sqlite3_reset_auto_extension =
-      _sqlite3_reset_auto_extension_ptr
-          .asFunction<_dart_sqlite3_reset_auto_extension>();
+  late final _sqlite3_reset_auto_extension =
+      _sqlite3_reset_auto_extension_ptr.asFunction<void Function()>();
 
   /// CAPI3REF: Register A Virtual Table Implementation
   /// METHOD: sqlite3
@@ -6843,18 +7855,24 @@
     );
   }
 
-  late final _sqlite3_create_module_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_module>>(
-          'sqlite3_create_module');
-  late final _dart_sqlite3_create_module _sqlite3_create_module =
-      _sqlite3_create_module_ptr.asFunction<_dart_sqlite3_create_module>();
+  late final _sqlite3_create_module_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<sqlite3_module>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_create_module');
+  late final _sqlite3_create_module = _sqlite3_create_module_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<sqlite3_module>, ffi.Pointer<ffi.Void>)>();
 
   int sqlite3_create_module_v2(
     ffi.Pointer<sqlite3> db,
     ffi.Pointer<ffi.Int8> zName,
     ffi.Pointer<sqlite3_module> p,
     ffi.Pointer<ffi.Void> pClientData,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_116>> xDestroy,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        xDestroy,
   ) {
     return _sqlite3_create_module_v2(
       db,
@@ -6865,12 +7883,27 @@
     );
   }
 
-  late final _sqlite3_create_module_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_create_module_v2>>(
-          'sqlite3_create_module_v2');
-  late final _dart_sqlite3_create_module_v2 _sqlite3_create_module_v2 =
-      _sqlite3_create_module_v2_ptr
-          .asFunction<_dart_sqlite3_create_module_v2>();
+  late final _sqlite3_create_module_v2_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3>,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Pointer<sqlite3_module>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_create_module_v2');
+  late final _sqlite3_create_module_v2 =
+      _sqlite3_create_module_v2_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<sqlite3_module>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 
   /// CAPI3REF: Remove Unnecessary Virtual Table Implementations
   /// METHOD: sqlite3
@@ -6892,11 +7925,12 @@
     );
   }
 
-  late final _sqlite3_drop_modules_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_drop_modules>>(
-          'sqlite3_drop_modules');
-  late final _dart_sqlite3_drop_modules _sqlite3_drop_modules =
-      _sqlite3_drop_modules_ptr.asFunction<_dart_sqlite3_drop_modules>();
+  late final _sqlite3_drop_modules_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>>('sqlite3_drop_modules');
+  late final _sqlite3_drop_modules = _sqlite3_drop_modules_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Pointer<ffi.Int8>>)>();
 
   /// CAPI3REF: Declare The Schema Of A Virtual Table
   ///
@@ -6914,11 +7948,12 @@
     );
   }
 
-  late final _sqlite3_declare_vtab_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_declare_vtab>>(
-          'sqlite3_declare_vtab');
-  late final _dart_sqlite3_declare_vtab _sqlite3_declare_vtab =
-      _sqlite3_declare_vtab_ptr.asFunction<_dart_sqlite3_declare_vtab>();
+  late final _sqlite3_declare_vtab_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_declare_vtab');
+  late final _sqlite3_declare_vtab = _sqlite3_declare_vtab_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Overload A Function For A Virtual Table
   /// METHOD: sqlite3
@@ -6947,12 +7982,13 @@
     );
   }
 
-  late final _sqlite3_overload_function_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_overload_function>>(
-          'sqlite3_overload_function');
-  late final _dart_sqlite3_overload_function _sqlite3_overload_function =
-      _sqlite3_overload_function_ptr
-          .asFunction<_dart_sqlite3_overload_function>();
+  late final _sqlite3_overload_function_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32)>>('sqlite3_overload_function');
+  late final _sqlite3_overload_function =
+      _sqlite3_overload_function_ptr.asFunction<
+          int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>, int)>();
 
   /// CAPI3REF: Open A BLOB For Incremental I/O
   /// METHOD: sqlite3
@@ -7055,10 +8091,25 @@
     );
   }
 
-  late final _sqlite3_blob_open_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_blob_open>>('sqlite3_blob_open');
-  late final _dart_sqlite3_blob_open _sqlite3_blob_open =
-      _sqlite3_blob_open_ptr.asFunction<_dart_sqlite3_blob_open>();
+  late final _sqlite3_blob_open_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>,
+              sqlite3_int64,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<sqlite3_blob>>)>>('sqlite3_blob_open');
+  late final _sqlite3_blob_open = _sqlite3_blob_open_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Int8>,
+          int,
+          int,
+          ffi.Pointer<ffi.Pointer<sqlite3_blob>>)>();
 
   /// CAPI3REF: Move a BLOB Handle to a New Row
   /// METHOD: sqlite3_blob
@@ -7091,11 +8142,12 @@
     );
   }
 
-  late final _sqlite3_blob_reopen_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_blob_reopen>>(
-          'sqlite3_blob_reopen');
-  late final _dart_sqlite3_blob_reopen _sqlite3_blob_reopen =
-      _sqlite3_blob_reopen_ptr.asFunction<_dart_sqlite3_blob_reopen>();
+  late final _sqlite3_blob_reopen_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_blob>,
+              sqlite3_int64)>>('sqlite3_blob_reopen');
+  late final _sqlite3_blob_reopen = _sqlite3_blob_reopen_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_blob>, int)>();
 
   /// CAPI3REF: Close A BLOB Handle
   /// DESTRUCTOR: sqlite3_blob
@@ -7124,10 +8176,11 @@
     );
   }
 
-  late final _sqlite3_blob_close_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_blob_close>>('sqlite3_blob_close');
-  late final _dart_sqlite3_blob_close _sqlite3_blob_close =
-      _sqlite3_blob_close_ptr.asFunction<_dart_sqlite3_blob_close>();
+  late final _sqlite3_blob_close_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_blob>)>>(
+      'sqlite3_blob_close');
+  late final _sqlite3_blob_close = _sqlite3_blob_close_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_blob>)>();
 
   /// CAPI3REF: Return The Size Of An Open BLOB
   /// METHOD: sqlite3_blob
@@ -7149,10 +8202,11 @@
     );
   }
 
-  late final _sqlite3_blob_bytes_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_blob_bytes>>('sqlite3_blob_bytes');
-  late final _dart_sqlite3_blob_bytes _sqlite3_blob_bytes =
-      _sqlite3_blob_bytes_ptr.asFunction<_dart_sqlite3_blob_bytes>();
+  late final _sqlite3_blob_bytes_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_blob>)>>(
+      'sqlite3_blob_bytes');
+  late final _sqlite3_blob_bytes = _sqlite3_blob_bytes_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_blob>)>();
 
   /// CAPI3REF: Read Data From A BLOB Incrementally
   /// METHOD: sqlite3_blob
@@ -7193,10 +8247,13 @@
     );
   }
 
-  late final _sqlite3_blob_read_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_blob_read>>('sqlite3_blob_read');
-  late final _dart_sqlite3_blob_read _sqlite3_blob_read =
-      _sqlite3_blob_read_ptr.asFunction<_dart_sqlite3_blob_read>();
+  late final _sqlite3_blob_read_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_blob>, ffi.Pointer<ffi.Void>,
+              ffi.Int32, ffi.Int32)>>('sqlite3_blob_read');
+  late final _sqlite3_blob_read = _sqlite3_blob_read_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_blob>, ffi.Pointer<ffi.Void>, int, int)>();
 
   /// CAPI3REF: Write Data Into A BLOB Incrementally
   /// METHOD: sqlite3_blob
@@ -7250,10 +8307,13 @@
     );
   }
 
-  late final _sqlite3_blob_write_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_blob_write>>('sqlite3_blob_write');
-  late final _dart_sqlite3_blob_write _sqlite3_blob_write =
-      _sqlite3_blob_write_ptr.asFunction<_dart_sqlite3_blob_write>();
+  late final _sqlite3_blob_write_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_blob>, ffi.Pointer<ffi.Void>,
+              ffi.Int32, ffi.Int32)>>('sqlite3_blob_write');
+  late final _sqlite3_blob_write = _sqlite3_blob_write_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_blob>, ffi.Pointer<ffi.Void>, int, int)>();
 
   /// CAPI3REF: Virtual File System Objects
   ///
@@ -7290,10 +8350,12 @@
     );
   }
 
-  late final _sqlite3_vfs_find_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_vfs_find>>('sqlite3_vfs_find');
-  late final _dart_sqlite3_vfs_find _sqlite3_vfs_find =
-      _sqlite3_vfs_find_ptr.asFunction<_dart_sqlite3_vfs_find>();
+  late final _sqlite3_vfs_find_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_vfs> Function(
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_vfs_find');
+  late final _sqlite3_vfs_find = _sqlite3_vfs_find_ptr
+      .asFunction<ffi.Pointer<sqlite3_vfs> Function(ffi.Pointer<ffi.Int8>)>();
 
   int sqlite3_vfs_register(
     ffi.Pointer<sqlite3_vfs> arg0,
@@ -7305,11 +8367,12 @@
     );
   }
 
-  late final _sqlite3_vfs_register_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_vfs_register>>(
-          'sqlite3_vfs_register');
-  late final _dart_sqlite3_vfs_register _sqlite3_vfs_register =
-      _sqlite3_vfs_register_ptr.asFunction<_dart_sqlite3_vfs_register>();
+  late final _sqlite3_vfs_register_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_vfs>, ffi.Int32)>>('sqlite3_vfs_register');
+  late final _sqlite3_vfs_register = _sqlite3_vfs_register_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_vfs>, int)>();
 
   int sqlite3_vfs_unregister(
     ffi.Pointer<sqlite3_vfs> arg0,
@@ -7320,10 +8383,10 @@
   }
 
   late final _sqlite3_vfs_unregister_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_vfs_unregister>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_vfs>)>>(
           'sqlite3_vfs_unregister');
-  late final _dart_sqlite3_vfs_unregister _sqlite3_vfs_unregister =
-      _sqlite3_vfs_unregister_ptr.asFunction<_dart_sqlite3_vfs_unregister>();
+  late final _sqlite3_vfs_unregister = _sqlite3_vfs_unregister_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_vfs>)>();
 
   /// CAPI3REF: Mutexes
   ///
@@ -7445,11 +8508,11 @@
     );
   }
 
-  late final _sqlite3_mutex_alloc_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mutex_alloc>>(
-          'sqlite3_mutex_alloc');
-  late final _dart_sqlite3_mutex_alloc _sqlite3_mutex_alloc =
-      _sqlite3_mutex_alloc_ptr.asFunction<_dart_sqlite3_mutex_alloc>();
+  late final _sqlite3_mutex_alloc_ptr = _lookup<
+          ffi.NativeFunction<ffi.Pointer<sqlite3_mutex> Function(ffi.Int32)>>(
+      'sqlite3_mutex_alloc');
+  late final _sqlite3_mutex_alloc = _sqlite3_mutex_alloc_ptr
+      .asFunction<ffi.Pointer<sqlite3_mutex> Function(int)>();
 
   void sqlite3_mutex_free(
     ffi.Pointer<sqlite3_mutex> arg0,
@@ -7459,10 +8522,11 @@
     );
   }
 
-  late final _sqlite3_mutex_free_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mutex_free>>('sqlite3_mutex_free');
-  late final _dart_sqlite3_mutex_free _sqlite3_mutex_free =
-      _sqlite3_mutex_free_ptr.asFunction<_dart_sqlite3_mutex_free>();
+  late final _sqlite3_mutex_free_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_mutex>)>>(
+      'sqlite3_mutex_free');
+  late final _sqlite3_mutex_free = _sqlite3_mutex_free_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_mutex>)>();
 
   void sqlite3_mutex_enter(
     ffi.Pointer<sqlite3_mutex> arg0,
@@ -7472,11 +8536,11 @@
     );
   }
 
-  late final _sqlite3_mutex_enter_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mutex_enter>>(
-          'sqlite3_mutex_enter');
-  late final _dart_sqlite3_mutex_enter _sqlite3_mutex_enter =
-      _sqlite3_mutex_enter_ptr.asFunction<_dart_sqlite3_mutex_enter>();
+  late final _sqlite3_mutex_enter_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_mutex>)>>(
+      'sqlite3_mutex_enter');
+  late final _sqlite3_mutex_enter = _sqlite3_mutex_enter_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_mutex>)>();
 
   int sqlite3_mutex_try(
     ffi.Pointer<sqlite3_mutex> arg0,
@@ -7486,10 +8550,11 @@
     );
   }
 
-  late final _sqlite3_mutex_try_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mutex_try>>('sqlite3_mutex_try');
-  late final _dart_sqlite3_mutex_try _sqlite3_mutex_try =
-      _sqlite3_mutex_try_ptr.asFunction<_dart_sqlite3_mutex_try>();
+  late final _sqlite3_mutex_try_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_mutex>)>>(
+      'sqlite3_mutex_try');
+  late final _sqlite3_mutex_try = _sqlite3_mutex_try_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_mutex>)>();
 
   void sqlite3_mutex_leave(
     ffi.Pointer<sqlite3_mutex> arg0,
@@ -7499,11 +8564,11 @@
     );
   }
 
-  late final _sqlite3_mutex_leave_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mutex_leave>>(
-          'sqlite3_mutex_leave');
-  late final _dart_sqlite3_mutex_leave _sqlite3_mutex_leave =
-      _sqlite3_mutex_leave_ptr.asFunction<_dart_sqlite3_mutex_leave>();
+  late final _sqlite3_mutex_leave_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_mutex>)>>(
+      'sqlite3_mutex_leave');
+  late final _sqlite3_mutex_leave = _sqlite3_mutex_leave_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_mutex>)>();
 
   int sqlite3_mutex_held(
     ffi.Pointer<sqlite3_mutex> arg0,
@@ -7513,10 +8578,11 @@
     );
   }
 
-  late final _sqlite3_mutex_held_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mutex_held>>('sqlite3_mutex_held');
-  late final _dart_sqlite3_mutex_held _sqlite3_mutex_held =
-      _sqlite3_mutex_held_ptr.asFunction<_dart_sqlite3_mutex_held>();
+  late final _sqlite3_mutex_held_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_mutex>)>>(
+      'sqlite3_mutex_held');
+  late final _sqlite3_mutex_held = _sqlite3_mutex_held_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_mutex>)>();
 
   int sqlite3_mutex_notheld(
     ffi.Pointer<sqlite3_mutex> arg0,
@@ -7526,11 +8592,11 @@
     );
   }
 
-  late final _sqlite3_mutex_notheld_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_mutex_notheld>>(
-          'sqlite3_mutex_notheld');
-  late final _dart_sqlite3_mutex_notheld _sqlite3_mutex_notheld =
-      _sqlite3_mutex_notheld_ptr.asFunction<_dart_sqlite3_mutex_notheld>();
+  late final _sqlite3_mutex_notheld_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_mutex>)>>(
+      'sqlite3_mutex_notheld');
+  late final _sqlite3_mutex_notheld = _sqlite3_mutex_notheld_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_mutex>)>();
 
   /// CAPI3REF: Retrieve the mutex for a database connection
   /// METHOD: sqlite3
@@ -7548,10 +8614,12 @@
     );
   }
 
-  late final _sqlite3_db_mutex_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_mutex>>('sqlite3_db_mutex');
-  late final _dart_sqlite3_db_mutex _sqlite3_db_mutex =
-      _sqlite3_db_mutex_ptr.asFunction<_dart_sqlite3_db_mutex>();
+  late final _sqlite3_db_mutex_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_mutex> Function(
+              ffi.Pointer<sqlite3>)>>('sqlite3_db_mutex');
+  late final _sqlite3_db_mutex = _sqlite3_db_mutex_ptr
+      .asFunction<ffi.Pointer<sqlite3_mutex> Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Low-Level Control Of Database Files
   /// METHOD: sqlite3
@@ -7606,11 +8674,13 @@
     );
   }
 
-  late final _sqlite3_file_control_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_file_control>>(
-          'sqlite3_file_control');
-  late final _dart_sqlite3_file_control _sqlite3_file_control =
-      _sqlite3_file_control_ptr.asFunction<_dart_sqlite3_file_control>();
+  late final _sqlite3_file_control_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32, ffi.Pointer<ffi.Void>)>>('sqlite3_file_control');
+  late final _sqlite3_file_control = _sqlite3_file_control_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>, int,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Testing Interface
   ///
@@ -7636,10 +8706,10 @@
   }
 
   late final _sqlite3_test_control_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_test_control>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>(
           'sqlite3_test_control');
-  late final _dart_sqlite3_test_control _sqlite3_test_control =
-      _sqlite3_test_control_ptr.asFunction<_dart_sqlite3_test_control>();
+  late final _sqlite3_test_control =
+      _sqlite3_test_control_ptr.asFunction<int Function(int)>();
 
   /// CAPI3REF: SQL Keyword Checking
   ///
@@ -7691,10 +8761,10 @@
   }
 
   late final _sqlite3_keyword_count_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_keyword_count>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function()>>(
           'sqlite3_keyword_count');
-  late final _dart_sqlite3_keyword_count _sqlite3_keyword_count =
-      _sqlite3_keyword_count_ptr.asFunction<_dart_sqlite3_keyword_count>();
+  late final _sqlite3_keyword_count =
+      _sqlite3_keyword_count_ptr.asFunction<int Function()>();
 
   int sqlite3_keyword_name(
     int arg0,
@@ -7708,11 +8778,13 @@
     );
   }
 
-  late final _sqlite3_keyword_name_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_keyword_name>>(
-          'sqlite3_keyword_name');
-  late final _dart_sqlite3_keyword_name _sqlite3_keyword_name =
-      _sqlite3_keyword_name_ptr.asFunction<_dart_sqlite3_keyword_name>();
+  late final _sqlite3_keyword_name_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Int32, ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Int32>)>>('sqlite3_keyword_name');
+  late final _sqlite3_keyword_name = _sqlite3_keyword_name_ptr.asFunction<
+      int Function(
+          int, ffi.Pointer<ffi.Pointer<ffi.Int8>>, ffi.Pointer<ffi.Int32>)>();
 
   int sqlite3_keyword_check(
     ffi.Pointer<ffi.Int8> arg0,
@@ -7724,11 +8796,12 @@
     );
   }
 
-  late final _sqlite3_keyword_check_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_keyword_check>>(
-          'sqlite3_keyword_check');
-  late final _dart_sqlite3_keyword_check _sqlite3_keyword_check =
-      _sqlite3_keyword_check_ptr.asFunction<_dart_sqlite3_keyword_check>();
+  late final _sqlite3_keyword_check_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ffi.Int8>, ffi.Int32)>>('sqlite3_keyword_check');
+  late final _sqlite3_keyword_check = _sqlite3_keyword_check_ptr
+      .asFunction<int Function(ffi.Pointer<ffi.Int8>, int)>();
 
   /// CAPI3REF: Create A New Dynamic String Object
   /// CONSTRUCTOR: sqlite3_str
@@ -7761,10 +8834,12 @@
     );
   }
 
-  late final _sqlite3_str_new_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_new>>('sqlite3_str_new');
-  late final _dart_sqlite3_str_new _sqlite3_str_new =
-      _sqlite3_str_new_ptr.asFunction<_dart_sqlite3_str_new>();
+  late final _sqlite3_str_new_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_str> Function(
+              ffi.Pointer<sqlite3>)>>('sqlite3_str_new');
+  late final _sqlite3_str_new = _sqlite3_str_new_ptr
+      .asFunction<ffi.Pointer<sqlite3_str> Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Finalize A Dynamic String
   /// DESTRUCTOR: sqlite3_str
@@ -7785,10 +8860,12 @@
     );
   }
 
-  late final _sqlite3_str_finish_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_finish>>('sqlite3_str_finish');
-  late final _dart_sqlite3_str_finish _sqlite3_str_finish =
-      _sqlite3_str_finish_ptr.asFunction<_dart_sqlite3_str_finish>();
+  late final _sqlite3_str_finish_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<sqlite3_str>)>>('sqlite3_str_finish');
+  late final _sqlite3_str_finish = _sqlite3_str_finish_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_str>)>();
 
   /// CAPI3REF: Add Content To A Dynamic String
   /// METHOD: sqlite3_str
@@ -7830,11 +8907,12 @@
     );
   }
 
-  late final _sqlite3_str_appendf_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_appendf>>(
-          'sqlite3_str_appendf');
-  late final _dart_sqlite3_str_appendf _sqlite3_str_appendf =
-      _sqlite3_str_appendf_ptr.asFunction<_dart_sqlite3_str_appendf>();
+  late final _sqlite3_str_appendf_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_str>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_str_appendf');
+  late final _sqlite3_str_appendf = _sqlite3_str_appendf_ptr.asFunction<
+      void Function(ffi.Pointer<sqlite3_str>, ffi.Pointer<ffi.Int8>)>();
 
   void sqlite3_str_append(
     ffi.Pointer<sqlite3_str> arg0,
@@ -7848,10 +8926,12 @@
     );
   }
 
-  late final _sqlite3_str_append_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_append>>('sqlite3_str_append');
-  late final _dart_sqlite3_str_append _sqlite3_str_append =
-      _sqlite3_str_append_ptr.asFunction<_dart_sqlite3_str_append>();
+  late final _sqlite3_str_append_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_str>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32)>>('sqlite3_str_append');
+  late final _sqlite3_str_append = _sqlite3_str_append_ptr.asFunction<
+      void Function(ffi.Pointer<sqlite3_str>, ffi.Pointer<ffi.Int8>, int)>();
 
   void sqlite3_str_appendall(
     ffi.Pointer<sqlite3_str> arg0,
@@ -7863,11 +8943,12 @@
     );
   }
 
-  late final _sqlite3_str_appendall_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_appendall>>(
-          'sqlite3_str_appendall');
-  late final _dart_sqlite3_str_appendall _sqlite3_str_appendall =
-      _sqlite3_str_appendall_ptr.asFunction<_dart_sqlite3_str_appendall>();
+  late final _sqlite3_str_appendall_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_str>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_str_appendall');
+  late final _sqlite3_str_appendall = _sqlite3_str_appendall_ptr.asFunction<
+      void Function(ffi.Pointer<sqlite3_str>, ffi.Pointer<ffi.Int8>)>();
 
   void sqlite3_str_appendchar(
     ffi.Pointer<sqlite3_str> arg0,
@@ -7881,11 +8962,12 @@
     );
   }
 
-  late final _sqlite3_str_appendchar_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_appendchar>>(
-          'sqlite3_str_appendchar');
-  late final _dart_sqlite3_str_appendchar _sqlite3_str_appendchar =
-      _sqlite3_str_appendchar_ptr.asFunction<_dart_sqlite3_str_appendchar>();
+  late final _sqlite3_str_appendchar_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_str>, ffi.Int32,
+              ffi.Int8)>>('sqlite3_str_appendchar');
+  late final _sqlite3_str_appendchar = _sqlite3_str_appendchar_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_str>, int, int)>();
 
   void sqlite3_str_reset(
     ffi.Pointer<sqlite3_str> arg0,
@@ -7896,9 +8978,10 @@
   }
 
   late final _sqlite3_str_reset_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_reset>>('sqlite3_str_reset');
-  late final _dart_sqlite3_str_reset _sqlite3_str_reset =
-      _sqlite3_str_reset_ptr.asFunction<_dart_sqlite3_str_reset>();
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_str>)>>(
+          'sqlite3_str_reset');
+  late final _sqlite3_str_reset = _sqlite3_str_reset_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_str>)>();
 
   /// CAPI3REF: Status Of A Dynamic String
   /// METHOD: sqlite3_str
@@ -7936,10 +9019,10 @@
   }
 
   late final _sqlite3_str_errcode_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_errcode>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_str>)>>(
           'sqlite3_str_errcode');
-  late final _dart_sqlite3_str_errcode _sqlite3_str_errcode =
-      _sqlite3_str_errcode_ptr.asFunction<_dart_sqlite3_str_errcode>();
+  late final _sqlite3_str_errcode = _sqlite3_str_errcode_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_str>)>();
 
   int sqlite3_str_length(
     ffi.Pointer<sqlite3_str> arg0,
@@ -7950,9 +9033,10 @@
   }
 
   late final _sqlite3_str_length_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_length>>('sqlite3_str_length');
-  late final _dart_sqlite3_str_length _sqlite3_str_length =
-      _sqlite3_str_length_ptr.asFunction<_dart_sqlite3_str_length>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_str>)>>(
+          'sqlite3_str_length');
+  late final _sqlite3_str_length = _sqlite3_str_length_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_str>)>();
 
   ffi.Pointer<ffi.Int8> sqlite3_str_value(
     ffi.Pointer<sqlite3_str> arg0,
@@ -7962,10 +9046,12 @@
     );
   }
 
-  late final _sqlite3_str_value_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_str_value>>('sqlite3_str_value');
-  late final _dart_sqlite3_str_value _sqlite3_str_value =
-      _sqlite3_str_value_ptr.asFunction<_dart_sqlite3_str_value>();
+  late final _sqlite3_str_value_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(
+              ffi.Pointer<sqlite3_str>)>>('sqlite3_str_value');
+  late final _sqlite3_str_value = _sqlite3_str_value_ptr
+      .asFunction<ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_str>)>();
 
   /// CAPI3REF: SQLite Runtime Status
   ///
@@ -8005,15 +9091,17 @@
     );
   }
 
-  late final _sqlite3_status_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_status>>('sqlite3_status');
-  late final _dart_sqlite3_status _sqlite3_status =
-      _sqlite3_status_ptr.asFunction<_dart_sqlite3_status>();
+  late final _sqlite3_status_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Int32, ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>, ffi.Int32)>>('sqlite3_status');
+  late final _sqlite3_status = _sqlite3_status_ptr.asFunction<
+      int Function(int, ffi.Pointer<ffi.Int32>, ffi.Pointer<ffi.Int32>, int)>();
 
   int sqlite3_status64(
     int op,
-    ffi.Pointer<ffi.Int64> pCurrent,
-    ffi.Pointer<ffi.Int64> pHighwater,
+    ffi.Pointer<sqlite3_int64> pCurrent,
+    ffi.Pointer<sqlite3_int64> pHighwater,
     int resetFlag,
   ) {
     return _sqlite3_status64(
@@ -8024,10 +9112,13 @@
     );
   }
 
-  late final _sqlite3_status64_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_status64>>('sqlite3_status64');
-  late final _dart_sqlite3_status64 _sqlite3_status64 =
-      _sqlite3_status64_ptr.asFunction<_dart_sqlite3_status64>();
+  late final _sqlite3_status64_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Int32, ffi.Pointer<sqlite3_int64>,
+              ffi.Pointer<sqlite3_int64>, ffi.Int32)>>('sqlite3_status64');
+  late final _sqlite3_status64 = _sqlite3_status64_ptr.asFunction<
+      int Function(
+          int, ffi.Pointer<sqlite3_int64>, ffi.Pointer<sqlite3_int64>, int)>();
 
   /// CAPI3REF: Database Connection Status
   /// METHOD: sqlite3
@@ -8066,10 +9157,17 @@
     );
   }
 
-  late final _sqlite3_db_status_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_status>>('sqlite3_db_status');
-  late final _dart_sqlite3_db_status _sqlite3_db_status =
-      _sqlite3_db_status_ptr.asFunction<_dart_sqlite3_db_status>();
+  late final _sqlite3_db_status_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Int32)>>('sqlite3_db_status');
+  late final _sqlite3_db_status = _sqlite3_db_status_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, int, ffi.Pointer<ffi.Int32>,
+          ffi.Pointer<ffi.Int32>, int)>();
 
   /// CAPI3REF: Prepared Statement Status
   /// METHOD: sqlite3_stmt
@@ -8105,11 +9203,12 @@
     );
   }
 
-  late final _sqlite3_stmt_status_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_stmt_status>>(
-          'sqlite3_stmt_status');
-  late final _dart_sqlite3_stmt_status _sqlite3_stmt_status =
-      _sqlite3_stmt_status_ptr.asFunction<_dart_sqlite3_stmt_status>();
+  late final _sqlite3_stmt_status_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32,
+              ffi.Int32)>>('sqlite3_stmt_status');
+  late final _sqlite3_stmt_status = _sqlite3_stmt_status_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_stmt>, int, int)>();
 
   /// CAPI3REF: Online Backup API.
   ///
@@ -8309,11 +9408,19 @@
     );
   }
 
-  late final _sqlite3_backup_init_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_backup_init>>(
-          'sqlite3_backup_init');
-  late final _dart_sqlite3_backup_init _sqlite3_backup_init =
-      _sqlite3_backup_init_ptr.asFunction<_dart_sqlite3_backup_init>();
+  late final _sqlite3_backup_init_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_backup> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_backup_init');
+  late final _sqlite3_backup_init = _sqlite3_backup_init_ptr.asFunction<
+      ffi.Pointer<sqlite3_backup> Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>)>();
 
   int sqlite3_backup_step(
     ffi.Pointer<sqlite3_backup> p,
@@ -8325,11 +9432,12 @@
     );
   }
 
-  late final _sqlite3_backup_step_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_backup_step>>(
-          'sqlite3_backup_step');
-  late final _dart_sqlite3_backup_step _sqlite3_backup_step =
-      _sqlite3_backup_step_ptr.asFunction<_dart_sqlite3_backup_step>();
+  late final _sqlite3_backup_step_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_backup>, ffi.Int32)>>('sqlite3_backup_step');
+  late final _sqlite3_backup_step = _sqlite3_backup_step_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_backup>, int)>();
 
   int sqlite3_backup_finish(
     ffi.Pointer<sqlite3_backup> p,
@@ -8339,11 +9447,11 @@
     );
   }
 
-  late final _sqlite3_backup_finish_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_backup_finish>>(
-          'sqlite3_backup_finish');
-  late final _dart_sqlite3_backup_finish _sqlite3_backup_finish =
-      _sqlite3_backup_finish_ptr.asFunction<_dart_sqlite3_backup_finish>();
+  late final _sqlite3_backup_finish_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_backup>)>>(
+      'sqlite3_backup_finish');
+  late final _sqlite3_backup_finish = _sqlite3_backup_finish_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_backup>)>();
 
   int sqlite3_backup_remaining(
     ffi.Pointer<sqlite3_backup> p,
@@ -8353,12 +9461,11 @@
     );
   }
 
-  late final _sqlite3_backup_remaining_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_backup_remaining>>(
-          'sqlite3_backup_remaining');
-  late final _dart_sqlite3_backup_remaining _sqlite3_backup_remaining =
-      _sqlite3_backup_remaining_ptr
-          .asFunction<_dart_sqlite3_backup_remaining>();
+  late final _sqlite3_backup_remaining_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_backup>)>>(
+      'sqlite3_backup_remaining');
+  late final _sqlite3_backup_remaining = _sqlite3_backup_remaining_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_backup>)>();
 
   int sqlite3_backup_pagecount(
     ffi.Pointer<sqlite3_backup> p,
@@ -8368,12 +9475,11 @@
     );
   }
 
-  late final _sqlite3_backup_pagecount_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_backup_pagecount>>(
-          'sqlite3_backup_pagecount');
-  late final _dart_sqlite3_backup_pagecount _sqlite3_backup_pagecount =
-      _sqlite3_backup_pagecount_ptr
-          .asFunction<_dart_sqlite3_backup_pagecount>();
+  late final _sqlite3_backup_pagecount_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_backup>)>>(
+      'sqlite3_backup_pagecount');
+  late final _sqlite3_backup_pagecount = _sqlite3_backup_pagecount_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_backup>)>();
 
   /// CAPI3REF: Unlock Notification
   /// METHOD: sqlite3
@@ -8490,7 +9596,11 @@
   /// SQLITE_LOCKED.)^
   int sqlite3_unlock_notify(
     ffi.Pointer<sqlite3> pBlocked,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_147>> xNotify,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Void Function(
+                    ffi.Pointer<ffi.Pointer<ffi.Void>>, ffi.Int32)>>
+        xNotify,
     ffi.Pointer<ffi.Void> pNotifyArg,
   ) {
     return _sqlite3_unlock_notify(
@@ -8500,11 +9610,23 @@
     );
   }
 
-  late final _sqlite3_unlock_notify_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_unlock_notify>>(
-          'sqlite3_unlock_notify');
-  late final _dart_sqlite3_unlock_notify _sqlite3_unlock_notify =
-      _sqlite3_unlock_notify_ptr.asFunction<_dart_sqlite3_unlock_notify>();
+  late final _sqlite3_unlock_notify_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(
+                          ffi.Pointer<ffi.Pointer<ffi.Void>>, ffi.Int32)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_unlock_notify');
+  late final _sqlite3_unlock_notify = _sqlite3_unlock_notify_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Void Function(
+                      ffi.Pointer<ffi.Pointer<ffi.Void>>, ffi.Int32)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: String Comparison
   ///
@@ -8522,10 +9644,12 @@
     );
   }
 
-  late final _sqlite3_stricmp_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_stricmp>>('sqlite3_stricmp');
-  late final _dart_sqlite3_stricmp _sqlite3_stricmp =
-      _sqlite3_stricmp_ptr.asFunction<_dart_sqlite3_stricmp>();
+  late final _sqlite3_stricmp_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_stricmp');
+  late final _sqlite3_stricmp = _sqlite3_stricmp_ptr
+      .asFunction<int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   int sqlite3_strnicmp(
     ffi.Pointer<ffi.Int8> arg0,
@@ -8539,10 +9663,12 @@
     );
   }
 
-  late final _sqlite3_strnicmp_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_strnicmp>>('sqlite3_strnicmp');
-  late final _dart_sqlite3_strnicmp _sqlite3_strnicmp =
-      _sqlite3_strnicmp_ptr.asFunction<_dart_sqlite3_strnicmp>();
+  late final _sqlite3_strnicmp_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32)>>('sqlite3_strnicmp');
+  late final _sqlite3_strnicmp = _sqlite3_strnicmp_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>, int)>();
 
   /// CAPI3REF: String Globbing
   ///
@@ -8567,10 +9693,12 @@
     );
   }
 
-  late final _sqlite3_strglob_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_strglob>>('sqlite3_strglob');
-  late final _dart_sqlite3_strglob _sqlite3_strglob =
-      _sqlite3_strglob_ptr.asFunction<_dart_sqlite3_strglob>();
+  late final _sqlite3_strglob_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_strglob');
+  late final _sqlite3_strglob = _sqlite3_strglob_ptr
+      .asFunction<int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: String LIKE Matching
   ///
@@ -8603,10 +9731,12 @@
     );
   }
 
-  late final _sqlite3_strlike_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_strlike>>('sqlite3_strlike');
-  late final _dart_sqlite3_strlike _sqlite3_strlike =
-      _sqlite3_strlike_ptr.asFunction<_dart_sqlite3_strlike>();
+  late final _sqlite3_strlike_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>,
+              ffi.Uint32)>>('sqlite3_strlike');
+  late final _sqlite3_strlike = _sqlite3_strlike_ptr.asFunction<
+      int Function(ffi.Pointer<ffi.Int8>, ffi.Pointer<ffi.Int8>, int)>();
 
   /// CAPI3REF: Error Logging Interface
   ///
@@ -8637,10 +9767,11 @@
     );
   }
 
-  late final _sqlite3_log_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_log>>('sqlite3_log');
-  late final _dart_sqlite3_log _sqlite3_log =
-      _sqlite3_log_ptr.asFunction<_dart_sqlite3_log>();
+  late final _sqlite3_log_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Int32, ffi.Pointer<ffi.Int8>)>>('sqlite3_log');
+  late final _sqlite3_log =
+      _sqlite3_log_ptr.asFunction<void Function(int, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Write-Ahead Log Commit Hook
   /// METHOD: sqlite3
@@ -8676,7 +9807,11 @@
   /// overwrite any prior [sqlite3_wal_hook()] settings.
   ffi.Pointer<ffi.Void> sqlite3_wal_hook(
     ffi.Pointer<sqlite3> arg0,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_148>> arg1,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(ffi.Pointer<ffi.Void>, ffi.Pointer<sqlite3>,
+                    ffi.Pointer<ffi.Int8>, ffi.Int32)>>
+        arg1,
     ffi.Pointer<ffi.Void> arg2,
   ) {
     return _sqlite3_wal_hook(
@@ -8686,10 +9821,26 @@
     );
   }
 
-  late final _sqlite3_wal_hook_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_wal_hook>>('sqlite3_wal_hook');
-  late final _dart_sqlite3_wal_hook _sqlite3_wal_hook =
-      _sqlite3_wal_hook_ptr.asFunction<_dart_sqlite3_wal_hook>();
+  late final _sqlite3_wal_hook_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Pointer<sqlite3>,
+                          ffi.Pointer<ffi.Int8>,
+                          ffi.Int32)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_wal_hook');
+  late final _sqlite3_wal_hook = _sqlite3_wal_hook_ptr.asFunction<
+      ffi.Pointer<ffi.Void> Function(
+          ffi.Pointer<sqlite3>,
+          ffi.Pointer<
+              ffi.NativeFunction<
+                  ffi.Int32 Function(ffi.Pointer<ffi.Void>,
+                      ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>, ffi.Int32)>>,
+          ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Configure an auto-checkpoint
   /// METHOD: sqlite3
@@ -8728,12 +9879,12 @@
     );
   }
 
-  late final _sqlite3_wal_autocheckpoint_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_wal_autocheckpoint>>(
-          'sqlite3_wal_autocheckpoint');
-  late final _dart_sqlite3_wal_autocheckpoint _sqlite3_wal_autocheckpoint =
-      _sqlite3_wal_autocheckpoint_ptr
-          .asFunction<_dart_sqlite3_wal_autocheckpoint>();
+  late final _sqlite3_wal_autocheckpoint_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>, ffi.Int32)>>('sqlite3_wal_autocheckpoint');
+  late final _sqlite3_wal_autocheckpoint = _sqlite3_wal_autocheckpoint_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, int)>();
 
   /// CAPI3REF: Checkpoint a database
   /// METHOD: sqlite3
@@ -8763,11 +9914,12 @@
     );
   }
 
-  late final _sqlite3_wal_checkpoint_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_wal_checkpoint>>(
-          'sqlite3_wal_checkpoint');
-  late final _dart_sqlite3_wal_checkpoint _sqlite3_wal_checkpoint =
-      _sqlite3_wal_checkpoint_ptr.asFunction<_dart_sqlite3_wal_checkpoint>();
+  late final _sqlite3_wal_checkpoint_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_wal_checkpoint');
+  late final _sqlite3_wal_checkpoint = _sqlite3_wal_checkpoint_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Checkpoint a database
   /// METHOD: sqlite3
@@ -8875,12 +10027,18 @@
     );
   }
 
-  late final _sqlite3_wal_checkpoint_v2_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_wal_checkpoint_v2>>(
-          'sqlite3_wal_checkpoint_v2');
-  late final _dart_sqlite3_wal_checkpoint_v2 _sqlite3_wal_checkpoint_v2 =
-      _sqlite3_wal_checkpoint_v2_ptr
-          .asFunction<_dart_sqlite3_wal_checkpoint_v2>();
+  late final _sqlite3_wal_checkpoint_v2_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>)>>('sqlite3_wal_checkpoint_v2');
+  late final _sqlite3_wal_checkpoint_v2 =
+      _sqlite3_wal_checkpoint_v2_ptr.asFunction<
+          int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>, int,
+              ffi.Pointer<ffi.Int32>, ffi.Pointer<ffi.Int32>)>();
 
   /// CAPI3REF: Virtual Table Interface Configuration
   ///
@@ -8908,11 +10066,12 @@
     );
   }
 
-  late final _sqlite3_vtab_config_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_vtab_config>>(
-          'sqlite3_vtab_config');
-  late final _dart_sqlite3_vtab_config _sqlite3_vtab_config =
-      _sqlite3_vtab_config_ptr.asFunction<_dart_sqlite3_vtab_config>();
+  late final _sqlite3_vtab_config_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>, ffi.Int32)>>('sqlite3_vtab_config');
+  late final _sqlite3_vtab_config = _sqlite3_vtab_config_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, int)>();
 
   /// CAPI3REF: Determine The Virtual Table Conflict Policy
   ///
@@ -8931,11 +10090,10 @@
   }
 
   late final _sqlite3_vtab_on_conflict_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_vtab_on_conflict>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_vtab_on_conflict');
-  late final _dart_sqlite3_vtab_on_conflict _sqlite3_vtab_on_conflict =
-      _sqlite3_vtab_on_conflict_ptr
-          .asFunction<_dart_sqlite3_vtab_on_conflict>();
+  late final _sqlite3_vtab_on_conflict = _sqlite3_vtab_on_conflict_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Determine If Virtual Table Column Access Is For UPDATE
   ///
@@ -8960,11 +10118,11 @@
     );
   }
 
-  late final _sqlite3_vtab_nochange_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_vtab_nochange>>(
-          'sqlite3_vtab_nochange');
-  late final _dart_sqlite3_vtab_nochange _sqlite3_vtab_nochange =
-      _sqlite3_vtab_nochange_ptr.asFunction<_dart_sqlite3_vtab_nochange>();
+  late final _sqlite3_vtab_nochange_ptr = _lookup<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_context>)>>(
+      'sqlite3_vtab_nochange');
+  late final _sqlite3_vtab_nochange = _sqlite3_vtab_nochange_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3_context>)>();
 
   /// CAPI3REF: Determine The Collation For a Virtual Table Constraint
   ///
@@ -8987,11 +10145,12 @@
     );
   }
 
-  late final _sqlite3_vtab_collation_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_vtab_collation>>(
-          'sqlite3_vtab_collation');
-  late final _dart_sqlite3_vtab_collation _sqlite3_vtab_collation =
-      _sqlite3_vtab_collation_ptr.asFunction<_dart_sqlite3_vtab_collation>();
+  late final _sqlite3_vtab_collation_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_index_info>,
+              ffi.Int32)>>('sqlite3_vtab_collation');
+  late final _sqlite3_vtab_collation = _sqlite3_vtab_collation_ptr.asFunction<
+      ffi.Pointer<ffi.Int8> Function(ffi.Pointer<sqlite3_index_info>, int)>();
 
   /// CAPI3REF: Prepared Statement Scan Status
   /// METHOD: sqlite3_stmt
@@ -9036,11 +10195,13 @@
     );
   }
 
-  late final _sqlite3_stmt_scanstatus_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_stmt_scanstatus>>(
-          'sqlite3_stmt_scanstatus');
-  late final _dart_sqlite3_stmt_scanstatus _sqlite3_stmt_scanstatus =
-      _sqlite3_stmt_scanstatus_ptr.asFunction<_dart_sqlite3_stmt_scanstatus>();
+  late final _sqlite3_stmt_scanstatus_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_stmt>, ffi.Int32, ffi.Int32,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_stmt_scanstatus');
+  late final _sqlite3_stmt_scanstatus = _sqlite3_stmt_scanstatus_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_stmt>, int, int, ffi.Pointer<ffi.Void>)>();
 
   /// CAPI3REF: Zero Scan-Status Counters
   /// METHOD: sqlite3_stmt
@@ -9058,11 +10219,10 @@
   }
 
   late final _sqlite3_stmt_scanstatus_reset_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_stmt_scanstatus_reset>>(
+      _lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_stmt>)>>(
           'sqlite3_stmt_scanstatus_reset');
-  late final _dart_sqlite3_stmt_scanstatus_reset
-      _sqlite3_stmt_scanstatus_reset = _sqlite3_stmt_scanstatus_reset_ptr
-          .asFunction<_dart_sqlite3_stmt_scanstatus_reset>();
+  late final _sqlite3_stmt_scanstatus_reset = _sqlite3_stmt_scanstatus_reset_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_stmt>)>();
 
   /// CAPI3REF: Flush caches to disk mid-transaction
   ///
@@ -9101,10 +10261,10 @@
   }
 
   late final _sqlite3_db_cacheflush_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_db_cacheflush>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_db_cacheflush');
-  late final _dart_sqlite3_db_cacheflush _sqlite3_db_cacheflush =
-      _sqlite3_db_cacheflush_ptr.asFunction<_dart_sqlite3_db_cacheflush>();
+  late final _sqlite3_db_cacheflush = _sqlite3_db_cacheflush_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Low-level system error code
   ///
@@ -9123,10 +10283,10 @@
   }
 
   late final _sqlite3_system_errno_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_system_errno>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3>)>>(
           'sqlite3_system_errno');
-  late final _dart_sqlite3_system_errno _sqlite3_system_errno =
-      _sqlite3_system_errno_ptr.asFunction<_dart_sqlite3_system_errno>();
+  late final _sqlite3_system_errno = _sqlite3_system_errno_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>)>();
 
   /// CAPI3REF: Record A Database Snapshot
   /// CONSTRUCTOR: sqlite3_snapshot
@@ -9181,11 +10341,14 @@
     );
   }
 
-  late final _sqlite3_snapshot_get_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_snapshot_get>>(
-          'sqlite3_snapshot_get');
-  late final _dart_sqlite3_snapshot_get _sqlite3_snapshot_get =
-      _sqlite3_snapshot_get_ptr.asFunction<_dart_sqlite3_snapshot_get>();
+  late final _sqlite3_snapshot_get_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+                  ffi.Pointer<ffi.Pointer<sqlite3_snapshot>>)>>(
+      'sqlite3_snapshot_get');
+  late final _sqlite3_snapshot_get = _sqlite3_snapshot_get_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Pointer<sqlite3_snapshot>>)>();
 
   /// CAPI3REF: Start a read transaction on an historical snapshot
   /// METHOD: sqlite3_snapshot
@@ -9240,11 +10403,13 @@
     );
   }
 
-  late final _sqlite3_snapshot_open_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_snapshot_open>>(
-          'sqlite3_snapshot_open');
-  late final _dart_sqlite3_snapshot_open _sqlite3_snapshot_open =
-      _sqlite3_snapshot_open_ptr.asFunction<_dart_sqlite3_snapshot_open>();
+  late final _sqlite3_snapshot_open_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<sqlite3_snapshot>)>>('sqlite3_snapshot_open');
+  late final _sqlite3_snapshot_open = _sqlite3_snapshot_open_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<sqlite3_snapshot>)>();
 
   /// CAPI3REF: Destroy a snapshot
   /// DESTRUCTOR: sqlite3_snapshot
@@ -9263,11 +10428,11 @@
     );
   }
 
-  late final _sqlite3_snapshot_free_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_snapshot_free>>(
-          'sqlite3_snapshot_free');
-  late final _dart_sqlite3_snapshot_free _sqlite3_snapshot_free =
-      _sqlite3_snapshot_free_ptr.asFunction<_dart_sqlite3_snapshot_free>();
+  late final _sqlite3_snapshot_free_ptr = _lookup<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_snapshot>)>>(
+      'sqlite3_snapshot_free');
+  late final _sqlite3_snapshot_free = _sqlite3_snapshot_free_ptr
+      .asFunction<void Function(ffi.Pointer<sqlite3_snapshot>)>();
 
   /// CAPI3REF: Compare the ages of two snapshot handles.
   /// METHOD: sqlite3_snapshot
@@ -9302,11 +10467,13 @@
     );
   }
 
-  late final _sqlite3_snapshot_cmp_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_snapshot_cmp>>(
-          'sqlite3_snapshot_cmp');
-  late final _dart_sqlite3_snapshot_cmp _sqlite3_snapshot_cmp =
-      _sqlite3_snapshot_cmp_ptr.asFunction<_dart_sqlite3_snapshot_cmp>();
+  late final _sqlite3_snapshot_cmp_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_snapshot>,
+              ffi.Pointer<sqlite3_snapshot>)>>('sqlite3_snapshot_cmp');
+  late final _sqlite3_snapshot_cmp = _sqlite3_snapshot_cmp_ptr.asFunction<
+      int Function(
+          ffi.Pointer<sqlite3_snapshot>, ffi.Pointer<sqlite3_snapshot>)>();
 
   /// CAPI3REF: Recover snapshots from a wal file
   /// METHOD: sqlite3_snapshot
@@ -9339,12 +10506,12 @@
     );
   }
 
-  late final _sqlite3_snapshot_recover_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_snapshot_recover>>(
-          'sqlite3_snapshot_recover');
-  late final _dart_sqlite3_snapshot_recover _sqlite3_snapshot_recover =
-      _sqlite3_snapshot_recover_ptr
-          .asFunction<_dart_sqlite3_snapshot_recover>();
+  late final _sqlite3_snapshot_recover_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>)>>('sqlite3_snapshot_recover');
+  late final _sqlite3_snapshot_recover = _sqlite3_snapshot_recover_ptr
+      .asFunction<int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>)>();
 
   /// CAPI3REF: Serialize a database
   ///
@@ -9383,7 +10550,7 @@
   ffi.Pointer<ffi.Uint8> sqlite3_serialize(
     ffi.Pointer<sqlite3> db,
     ffi.Pointer<ffi.Int8> zSchema,
-    ffi.Pointer<ffi.Int64> piSize,
+    ffi.Pointer<sqlite3_int64> piSize,
     int mFlags,
   ) {
     return _sqlite3_serialize(
@@ -9394,10 +10561,16 @@
     );
   }
 
-  late final _sqlite3_serialize_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_serialize>>('sqlite3_serialize');
-  late final _dart_sqlite3_serialize _sqlite3_serialize =
-      _sqlite3_serialize_ptr.asFunction<_dart_sqlite3_serialize>();
+  late final _sqlite3_serialize_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Uint8> Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<sqlite3_int64>,
+              ffi.Uint32)>>('sqlite3_serialize');
+  late final _sqlite3_serialize = _sqlite3_serialize_ptr.asFunction<
+      ffi.Pointer<ffi.Uint8> Function(ffi.Pointer<sqlite3>,
+          ffi.Pointer<ffi.Int8>, ffi.Pointer<sqlite3_int64>, int)>();
 
   /// CAPI3REF: Deserialize a database
   ///
@@ -9444,11 +10617,18 @@
     );
   }
 
-  late final _sqlite3_deserialize_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_deserialize>>(
-          'sqlite3_deserialize');
-  late final _dart_sqlite3_deserialize _sqlite3_deserialize =
-      _sqlite3_deserialize_ptr.asFunction<_dart_sqlite3_deserialize>();
+  late final _sqlite3_deserialize_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Uint8>,
+              sqlite3_int64,
+              sqlite3_int64,
+              ffi.Uint32)>>('sqlite3_deserialize');
+  late final _sqlite3_deserialize = _sqlite3_deserialize_ptr.asFunction<
+      int Function(ffi.Pointer<sqlite3>, ffi.Pointer<ffi.Int8>,
+          ffi.Pointer<ffi.Uint8>, int, int, int)>();
 
   /// Register a geometry callback named zGeom that can be used as part of an
   /// R-Tree geometry query as follows:
@@ -9457,7 +10637,14 @@
   int sqlite3_rtree_geometry_callback(
     ffi.Pointer<sqlite3> db,
     ffi.Pointer<ffi.Int8> zGeom,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_151>> xGeom,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(
+                    ffi.Pointer<sqlite3_rtree_geometry>,
+                    ffi.Int32,
+                    ffi.Pointer<sqlite3_rtree_dbl>,
+                    ffi.Pointer<ffi.Int32>)>>
+        xGeom,
     ffi.Pointer<ffi.Void> pContext,
   ) {
     return _sqlite3_rtree_geometry_callback(
@@ -9468,12 +10655,32 @@
     );
   }
 
-  late final _sqlite3_rtree_geometry_callback_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_rtree_geometry_callback>>(
-          'sqlite3_rtree_geometry_callback');
-  late final _dart_sqlite3_rtree_geometry_callback
-      _sqlite3_rtree_geometry_callback = _sqlite3_rtree_geometry_callback_ptr
-          .asFunction<_dart_sqlite3_rtree_geometry_callback>();
+  late final _sqlite3_rtree_geometry_callback_ptr = _lookup<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<sqlite3_rtree_geometry>,
+                          ffi.Int32,
+                          ffi.Pointer<sqlite3_rtree_dbl>,
+                          ffi.Pointer<ffi.Int32>)>>,
+              ffi.Pointer<ffi.Void>)>>('sqlite3_rtree_geometry_callback');
+  late final _sqlite3_rtree_geometry_callback =
+      _sqlite3_rtree_geometry_callback_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<sqlite3_rtree_geometry>,
+                          ffi.Int32,
+                          ffi.Pointer<sqlite3_rtree_dbl>,
+                          ffi.Pointer<ffi.Int32>)>>,
+              ffi.Pointer<ffi.Void>)>();
 
   /// Register a 2nd-generation geometry callback named zScore that can be
   /// used as part of an R-Tree geometry query as follows:
@@ -9482,9 +10689,13 @@
   int sqlite3_rtree_query_callback(
     ffi.Pointer<sqlite3> db,
     ffi.Pointer<ffi.Int8> zQueryFunc,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_152>> xQueryFunc,
+    ffi.Pointer<
+            ffi.NativeFunction<
+                ffi.Int32 Function(ffi.Pointer<sqlite3_rtree_query_info>)>>
+        xQueryFunc,
     ffi.Pointer<ffi.Void> pContext,
-    ffi.Pointer<ffi.NativeFunction<_typedefC_153>> xDestructor,
+    ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+        xDestructor,
   ) {
     return _sqlite3_rtree_query_callback(
       db,
@@ -9495,64 +10706,137 @@
     );
   }
 
-  late final _sqlite3_rtree_query_callback_ptr =
-      _lookup<ffi.NativeFunction<_c_sqlite3_rtree_query_callback>>(
-          'sqlite3_rtree_query_callback');
-  late final _dart_sqlite3_rtree_query_callback _sqlite3_rtree_query_callback =
-      _sqlite3_rtree_query_callback_ptr
-          .asFunction<_dart_sqlite3_rtree_query_callback>();
+  late final _sqlite3_rtree_query_callback_ptr = _lookup<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3>,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Int32 Function(
+                              ffi.Pointer<sqlite3_rtree_query_info>)>>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>(
+      'sqlite3_rtree_query_callback');
+  late final _sqlite3_rtree_query_callback =
+      _sqlite3_rtree_query_callback_ptr.asFunction<
+          int Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<sqlite3_rtree_query_info>)>>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>();
 }
 
 class sqlite3 extends ffi.Opaque {}
 
-class sqlite3_io_methods extends ffi.Struct {
-  @ffi.Int32()
-  external int iVersion;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_2>> xClose;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_3>> xRead;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_4>> xWrite;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_5>> xTruncate;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_6>> xSync;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_7>> xFileSize;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_8>> xLock;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_9>> xUnlock;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_10>> xCheckReservedLock;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_11>> xFileControl;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_12>> xSectorSize;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_13>> xDeviceCharacteristics;
-
-  /// Methods above are valid for version 1
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_14>> xShmMap;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_15>> xShmLock;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_16>> xShmBarrier;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_17>> xShmUnmap;
-
-  /// Methods above are valid for version 2
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_18>> xFetch;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_19>> xUnfetch;
-}
-
 class sqlite3_file extends ffi.Struct {
   /// Methods for an open file
   external ffi.Pointer<sqlite3_io_methods> pMethods;
 }
 
+class sqlite3_io_methods extends ffi.Struct {
+  @ffi.Int32()
+  external int iVersion;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_file>)>> xClose;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, ffi.Pointer<ffi.Void>,
+              ffi.Int32, sqlite3_int64)>> xRead;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, ffi.Pointer<ffi.Void>,
+              ffi.Int32, sqlite3_int64)>> xWrite;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(ffi.Pointer<sqlite3_file>, sqlite3_int64)>>
+      xTruncate;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, ffi.Int32)>> xSync;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_file>, ffi.Pointer<sqlite3_int64>)>>
+      xFileSize;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, ffi.Int32)>> xLock;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, ffi.Int32)>> xUnlock;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_file>, ffi.Pointer<ffi.Int32>)>>
+      xCheckReservedLock;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_file>, ffi.Int32, ffi.Pointer<ffi.Void>)>>
+      xFileControl;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_file>)>>
+      xSectorSize;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_file>)>>
+      xDeviceCharacteristics;
+
+  /// Methods above are valid for version 1
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, ffi.Int32, ffi.Int32,
+              ffi.Int32, ffi.Pointer<ffi.Pointer<ffi.Void>>)>> xShmMap;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_file>, ffi.Int32, ffi.Int32, ffi.Int32)>>
+      xShmLock;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_file>)>>
+      xShmBarrier;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, ffi.Int32)>> xShmUnmap;
+
+  /// Methods above are valid for version 2
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, sqlite3_int64,
+              ffi.Int32, ffi.Pointer<ffi.Pointer<ffi.Void>>)>> xFetch;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_file>, sqlite3_int64,
+              ffi.Pointer<ffi.Void>)>> xUnfetch;
+}
+
+typedef sqlite3_int64 = sqlite_int64;
+typedef sqlite_int64 = ffi.Int64;
+
 class sqlite3_mutex extends ffi.Opaque {}
 
 class sqlite3_api_routines extends ffi.Opaque {}
@@ -9579,112 +10863,329 @@
   /// Pointer to application-specific data
   external ffi.Pointer<ffi.Void> pAppData;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_20>> xOpen;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_vfs>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<sqlite3_file>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int32>)>> xOpen;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_21>> xDelete;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Int8>, ffi.Int32)>>
+      xDelete;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_22>> xAccess;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32, ffi.Pointer<ffi.Int32>)>> xAccess;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_23>> xFullPathname;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Int8>,
+              ffi.Int32, ffi.Pointer<ffi.Int8>)>> xFullPathname;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_24>> xDlOpen;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Int8>)>> xDlOpen;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_25>> xDlError;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(
+                  ffi.Pointer<sqlite3_vfs>, ffi.Int32, ffi.Pointer<ffi.Int8>)>>
+      xDlError;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_26>> xDlSym;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> Function(
+              ffi.Pointer<sqlite3_vfs>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<ffi.Int8>)>> xDlSym;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_28>> xDlClose;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Void>)>> xDlClose;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_29>> xRandomness;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_vfs>, ffi.Int32, ffi.Pointer<ffi.Int8>)>>
+      xRandomness;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_30>> xSleep;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vfs>, ffi.Int32)>> xSleep;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_31>> xCurrentTime;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Double>)>> xCurrentTime;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_32>> xGetLastError;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_vfs>, ffi.Int32, ffi.Pointer<ffi.Int8>)>>
+      xGetLastError;
 
   /// The methods above are in version 1 of the sqlite_vfs object
   /// definition.  Those that follow are added in version 2 or later
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_33>> xCurrentTimeInt64;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_vfs>, ffi.Pointer<sqlite3_int64>)>>
+      xCurrentTimeInt64;
 
   /// The methods above are in versions 1 and 2 of the sqlite_vfs object.
   /// Those below are for version 3 and greater.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_34>> xSetSystemCall;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Int8>,
+              sqlite3_syscall_ptr)>> xSetSystemCall;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_35>> xGetSystemCall;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          sqlite3_syscall_ptr Function(
+              ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Int8>)>> xGetSystemCall;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_36>> xNextSystemCall;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Pointer<ffi.Int8> Function(
+                  ffi.Pointer<sqlite3_vfs>, ffi.Pointer<ffi.Int8>)>>
+      xNextSystemCall;
 }
 
+typedef sqlite3_syscall_ptr
+    = ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>;
+
 class sqlite3_mem_methods extends ffi.Struct {
   /// Memory allocation function
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_37>> xMalloc;
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Pointer<ffi.Void> Function(ffi.Int32)>> xMalloc;
 
   /// Free a prior allocation
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_38>> xFree;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      xFree;
 
   /// Resize an allocation
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_39>> xRealloc;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Pointer<ffi.Void> Function(ffi.Pointer<ffi.Void>, ffi.Int32)>>
+      xRealloc;
 
   /// Return the size of an allocation
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_40>> xSize;
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>> xSize;
 
   /// Round up request size to allocation size
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_41>> xRoundup;
+  external ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>
+      xRoundup;
 
   /// Initialize the memory allocator
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_42>> xInit;
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>> xInit;
 
   /// Deinitialize the memory allocator
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_43>> xShutdown;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      xShutdown;
 
   /// Argument to xInit() and xShutdown()
   external ffi.Pointer<ffi.Void> pAppData;
 }
 
+typedef sqlite3_uint64 = sqlite_uint64;
+typedef sqlite_uint64 = ffi.Uint64;
+
 class sqlite3_stmt extends ffi.Opaque {}
 
 class sqlite3_value extends ffi.Opaque {}
 
 class sqlite3_context extends ffi.Opaque {}
 
-class sqlite3_index_constraint extends ffi.Struct {
-  /// Column constrained.  -1 for ROWID
+/// CAPI3REF: Virtual Table Instance Object
+/// KEYWORDS: sqlite3_vtab
+///
+/// Every [virtual table module] implementation uses a subclass
+/// of this object to describe a particular instance
+/// of the [virtual table].  Each subclass will
+/// be tailored to the specific needs of the module implementation.
+/// The purpose of this superclass is to define certain fields that are
+/// common to all module implementations.
+///
+/// ^Virtual tables methods can set an error message by assigning a
+/// string obtained from [sqlite3_mprintf()] to zErrMsg.  The method should
+/// take care that any prior string is freed by a call to [sqlite3_free()]
+/// prior to assigning a new string to zErrMsg.  ^After the error message
+/// is delivered up to the client application, the string will be automatically
+/// freed by sqlite3_free() and the zErrMsg field will be zeroed.
+class sqlite3_vtab extends ffi.Struct {
+  /// The module for this virtual table
+  external ffi.Pointer<sqlite3_module> pModule;
+
+  /// Number of open cursors
   @ffi.Int32()
-  external int iColumn;
+  external int nRef;
 
-  /// Constraint operator
-  @ffi.Uint8()
-  external int op;
-
-  /// True if this constraint is usable
-  @ffi.Uint8()
-  external int usable;
-
-  /// Used internally - xBestIndex should ignore
-  @ffi.Int32()
-  external int iTermOffset;
+  /// Error message from sqlite3_mprintf()
+  external ffi.Pointer<ffi.Int8> zErrMsg;
 }
 
-class sqlite3_index_orderby extends ffi.Struct {
-  /// Column number
+/// CAPI3REF: Virtual Table Object
+/// KEYWORDS: sqlite3_module {virtual table module}
+///
+/// This structure, sometimes called a "virtual table module",
+/// defines the implementation of a [virtual table].
+/// This structure consists mostly of methods for the module.
+///
+/// ^A virtual table module is created by filling in a persistent
+/// instance of this structure and passing a pointer to that instance
+/// to [sqlite3_create_module()] or [sqlite3_create_module_v2()].
+/// ^The registration remains valid until it is replaced by a different
+/// module or until the [database connection] closes.  The content
+/// of this structure must not change while it is registered with
+/// any database connection.
+class sqlite3_module extends ffi.Struct {
   @ffi.Int32()
-  external int iColumn;
+  external int iVersion;
 
-  /// True for DESC.  False for ASC.
-  @ffi.Uint8()
-  external int desc;
-}
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Pointer<sqlite3_vtab>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>> xCreate;
 
-/// Outputs
-class sqlite3_index_constraint_usage extends ffi.Struct {
-  /// if >0, constraint is part of argv to xFilter
-  @ffi.Int32()
-  external int argvIndex;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Pointer<sqlite3_vtab>>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>)>> xConnect;
 
-  /// Do not code a test for this constraint
-  @ffi.Uint8()
-  external int omit;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<sqlite3_vtab>, ffi.Pointer<sqlite3_index_info>)>>
+      xBestIndex;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>)>>
+      xDisconnect;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>)>>
+      xDestroy;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>,
+              ffi.Pointer<ffi.Pointer<sqlite3_vtab_cursor>>)>> xOpen;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab_cursor>)>> xClose;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_vtab_cursor>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<sqlite3_value>>)>> xFilter;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab_cursor>)>> xNext;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab_cursor>)>> xEof;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab_cursor>,
+              ffi.Pointer<sqlite3_context>, ffi.Int32)>> xColumn;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab_cursor>,
+              ffi.Pointer<sqlite3_int64>)>> xRowid;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_vtab>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<sqlite3_value>>,
+              ffi.Pointer<sqlite3_int64>)>> xUpdate;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>)>> xBegin;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>)>> xSync;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>)>>
+      xCommit;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>)>>
+      xRollback;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_vtab>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(
+                              ffi.Pointer<sqlite3_context>,
+                              ffi.Int32,
+                              ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>>,
+              ffi.Pointer<ffi.Pointer<ffi.Void>>)>> xFindFunction;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<sqlite3_vtab>, ffi.Pointer<ffi.Int8>)>> xRename;
+
+  /// The methods above are in version 1 of the sqlite_module object. Those
+  /// below are for version 2 and greater.
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>, ffi.Int32)>> xSavepoint;
+
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>, ffi.Int32)>> xRelease;
+
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(ffi.Pointer<sqlite3_vtab>, ffi.Int32)>>
+      xRollbackTo;
+
+  /// The methods above are in versions 1 and 2 of the sqlite_module object.
+  /// Those below are for version 3 and greater.
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Int8>)>>
+      xShadowName;
 }
 
 /// CAPI3REF: Virtual Table Indexing Information
@@ -9824,7 +11325,7 @@
   external double estimatedCost;
 
   /// Estimated number of rows returned
-  @ffi.Int64()
+  @sqlite3_int64()
   external int estimatedRows;
 
   /// Mask of SQLITE_INDEX_SCAN_* flags
@@ -9832,10 +11333,49 @@
   external int idxFlags;
 
   /// Input: Mask of columns used by statement
-  @ffi.Uint64()
+  @sqlite3_uint64()
   external int colUsed;
 }
 
+class sqlite3_index_constraint extends ffi.Struct {
+  /// Column constrained.  -1 for ROWID
+  @ffi.Int32()
+  external int iColumn;
+
+  /// Constraint operator
+  @ffi.Uint8()
+  external int op;
+
+  /// True if this constraint is usable
+  @ffi.Uint8()
+  external int usable;
+
+  /// Used internally - xBestIndex should ignore
+  @ffi.Int32()
+  external int iTermOffset;
+}
+
+class sqlite3_index_orderby extends ffi.Struct {
+  /// Column number
+  @ffi.Int32()
+  external int iColumn;
+
+  /// True for DESC.  False for ASC.
+  @ffi.Uint8()
+  external int desc;
+}
+
+/// Outputs
+class sqlite3_index_constraint_usage extends ffi.Struct {
+  /// if >0, constraint is part of argv to xFilter
+  @ffi.Int32()
+  external int argvIndex;
+
+  /// Do not code a test for this constraint
+  @ffi.Uint8()
+  external int omit;
+}
+
 /// CAPI3REF: Virtual Table Cursor Object
 /// KEYWORDS: sqlite3_vtab_cursor {virtual table cursor}
 ///
@@ -9856,123 +11396,40 @@
   external ffi.Pointer<sqlite3_vtab> pVtab;
 }
 
-/// CAPI3REF: Virtual Table Object
-/// KEYWORDS: sqlite3_module {virtual table module}
-///
-/// This structure, sometimes called a "virtual table module",
-/// defines the implementation of a [virtual table].
-/// This structure consists mostly of methods for the module.
-///
-/// ^A virtual table module is created by filling in a persistent
-/// instance of this structure and passing a pointer to that instance
-/// to [sqlite3_create_module()] or [sqlite3_create_module_v2()].
-/// ^The registration remains valid until it is replaced by a different
-/// module or until the [database connection] closes.  The content
-/// of this structure must not change while it is registered with
-/// any database connection.
-class sqlite3_module extends ffi.Struct {
-  @ffi.Int32()
-  external int iVersion;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_92>> xCreate;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_93>> xConnect;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_94>> xBestIndex;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_95>> xDisconnect;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_96>> xDestroy;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_97>> xOpen;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_98>> xClose;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_99>> xFilter;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_100>> xNext;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_101>> xEof;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_102>> xColumn;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_103>> xRowid;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_104>> xUpdate;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_105>> xBegin;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_106>> xSync;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_107>> xCommit;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_108>> xRollback;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_110>> xFindFunction;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_111>> xRename;
-
-  /// The methods above are in version 1 of the sqlite_module object. Those
-  /// below are for version 2 and greater.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_112>> xSavepoint;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_113>> xRelease;
-
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_114>> xRollbackTo;
-
-  /// The methods above are in versions 1 and 2 of the sqlite_module object.
-  /// Those below are for version 3 and greater.
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_115>> xShadowName;
-}
-
-/// CAPI3REF: Virtual Table Instance Object
-/// KEYWORDS: sqlite3_vtab
-///
-/// Every [virtual table module] implementation uses a subclass
-/// of this object to describe a particular instance
-/// of the [virtual table].  Each subclass will
-/// be tailored to the specific needs of the module implementation.
-/// The purpose of this superclass is to define certain fields that are
-/// common to all module implementations.
-///
-/// ^Virtual tables methods can set an error message by assigning a
-/// string obtained from [sqlite3_mprintf()] to zErrMsg.  The method should
-/// take care that any prior string is freed by a call to [sqlite3_free()]
-/// prior to assigning a new string to zErrMsg.  ^After the error message
-/// is delivered up to the client application, the string will be automatically
-/// freed by sqlite3_free() and the zErrMsg field will be zeroed.
-class sqlite3_vtab extends ffi.Struct {
-  /// The module for this virtual table
-  external ffi.Pointer<sqlite3_module> pModule;
-
-  /// Number of open cursors
-  @ffi.Int32()
-  external int nRef;
-
-  /// Error message from sqlite3_mprintf()
-  external ffi.Pointer<ffi.Int8> zErrMsg;
-}
-
 class sqlite3_blob extends ffi.Opaque {}
 
 class sqlite3_mutex_methods extends ffi.Struct {
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_117>> xMutexInit;
+  external ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function()>> xMutexInit;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_118>> xMutexEnd;
+  external ffi.Pointer<ffi.NativeFunction<ffi.Int32 Function()>> xMutexEnd;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_119>> xMutexAlloc;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Pointer<sqlite3_mutex> Function(ffi.Int32)>>
+      xMutexAlloc;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_120>> xMutexFree;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_mutex>)>>
+      xMutexFree;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_121>> xMutexEnter;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_mutex>)>>
+      xMutexEnter;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_122>> xMutexTry;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_mutex>)>>
+      xMutexTry;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_123>> xMutexLeave;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_mutex>)>>
+      xMutexLeave;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_124>> xMutexHeld;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_mutex>)>>
+      xMutexHeld;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_125>> xMutexNotheld;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_mutex>)>>
+      xMutexNotheld;
 }
 
 class sqlite3_str extends ffi.Opaque {}
@@ -9993,51 +11450,105 @@
 
   external ffi.Pointer<ffi.Void> pArg;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_126>> xInit;
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>> xInit;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_127>> xShutdown;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      xShutdown;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_128>> xCreate;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_pcache> Function(
+              ffi.Int32, ffi.Int32, ffi.Int32)>> xCreate;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_129>> xCachesize;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<sqlite3_pcache>, ffi.Int32)>>
+      xCachesize;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_130>> xPagecount;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_pcache>)>>
+      xPagecount;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_131>> xFetch;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_pcache_page> Function(
+              ffi.Pointer<sqlite3_pcache>, ffi.Uint32, ffi.Int32)>> xFetch;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_132>> xUnpin;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_pcache>,
+              ffi.Pointer<sqlite3_pcache_page>, ffi.Int32)>> xUnpin;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_133>> xRekey;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<sqlite3_pcache>,
+              ffi.Pointer<sqlite3_pcache_page>,
+              ffi.Uint32,
+              ffi.Uint32)>> xRekey;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_134>> xTruncate;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<sqlite3_pcache>, ffi.Uint32)>>
+      xTruncate;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_135>> xDestroy;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_pcache>)>>
+      xDestroy;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_136>> xShrink;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_pcache>)>>
+      xShrink;
 }
 
 class sqlite3_pcache_methods extends ffi.Struct {
   external ffi.Pointer<ffi.Void> pArg;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_137>> xInit;
+  external ffi.Pointer<
+      ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<ffi.Void>)>> xInit;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_138>> xShutdown;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      xShutdown;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_139>> xCreate;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<sqlite3_pcache> Function(ffi.Int32, ffi.Int32)>> xCreate;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_140>> xCachesize;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<sqlite3_pcache>, ffi.Int32)>>
+      xCachesize;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_141>> xPagecount;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<sqlite3_pcache>)>>
+      xPagecount;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_142>> xFetch;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<sqlite3_pcache>, ffi.Uint32, ffi.Int32)>> xFetch;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_143>> xUnpin;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_pcache>, ffi.Pointer<ffi.Void>,
+              ffi.Int32)>> xUnpin;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_144>> xRekey;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(ffi.Pointer<sqlite3_pcache>, ffi.Pointer<ffi.Void>,
+              ffi.Uint32, ffi.Uint32)>> xRekey;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_145>> xTruncate;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Void Function(ffi.Pointer<sqlite3_pcache>, ffi.Uint32)>>
+      xTruncate;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_146>> xDestroy;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<sqlite3_pcache>)>>
+      xDestroy;
 }
 
 class sqlite3_backup extends ffi.Opaque {}
@@ -10076,15 +11587,19 @@
   external int nParam;
 
   /// Parameters passed to SQL geom function
-  external ffi.Pointer<ffi.Double> aParam;
+  external ffi.Pointer<sqlite3_rtree_dbl> aParam;
 
   /// Callback implementation user data
   external ffi.Pointer<ffi.Void> pUser;
 
   /// Called by SQLite to clean up pUser
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_149>> xDelUser;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      xDelUser;
 }
 
+typedef sqlite3_rtree_dbl = ffi.Double;
+
 /// A pointer to a structure of the following type is passed as the
 /// argument to scored geometry callback registered using
 /// sqlite3_rtree_query_callback().
@@ -10101,16 +11616,18 @@
   external int nParam;
 
   /// value of function parameters
-  external ffi.Pointer<ffi.Double> aParam;
+  external ffi.Pointer<sqlite3_rtree_dbl> aParam;
 
   /// callback can use this, if desired
   external ffi.Pointer<ffi.Void> pUser;
 
   /// function to free pUser
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_150>> xDelUser;
+  external ffi
+          .Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>
+      xDelUser;
 
   /// Coordinates of node or entry to check
-  external ffi.Pointer<ffi.Double> aCoord;
+  external ffi.Pointer<sqlite3_rtree_dbl> aCoord;
 
   /// Number of pending entries in the queue
   external ffi.Pointer<ffi.Uint32> anQueue;
@@ -10128,11 +11645,11 @@
   external int mxLevel;
 
   /// Rowid for current entry
-  @ffi.Int64()
+  @sqlite3_int64()
   external int iRowid;
 
   /// Score of parent node
-  @ffi.Double()
+  @sqlite3_rtree_dbl()
   external double rParentScore;
 
   /// Visibility of parent node
@@ -10144,21 +11661,13 @@
   external int eWithin;
 
   /// OUT: Write the score here
-  @ffi.Double()
+  @sqlite3_rtree_dbl()
   external double rScore;
 
   /// Original SQL values of parameters
   external ffi.Pointer<ffi.Pointer<sqlite3_value>> apSqlParam;
 }
 
-class Fts5Context extends ffi.Opaque {}
-
-class Fts5PhraseIter extends ffi.Struct {
-  external ffi.Pointer<ffi.Uint8> a;
-
-  external ffi.Pointer<ffi.Uint8> b;
-}
-
 /// EXTENSION API FUNCTIONS
 ///
 /// xUserData(pFts):
@@ -10373,53 +11882,181 @@
   @ffi.Int32()
   external int iVersion;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_154>> xUserData;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(ffi.Pointer<Fts5Context>)>> xUserData;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_155>> xColumnCount;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<Fts5Context>)>>
+      xColumnCount;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_156>> xRowCount;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>, ffi.Pointer<sqlite3_int64>)>> xRowCount;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_157>> xColumnTotalSize;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<Fts5Context>, ffi.Int32,
+              ffi.Pointer<sqlite3_int64>)>> xColumnTotalSize;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_159>> xTokenize;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Int8>,
+                          ffi.Int32,
+                          ffi.Int32,
+                          ffi.Int32)>>)>> xTokenize;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_160>> xPhraseCount;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Int32 Function(ffi.Pointer<Fts5Context>)>>
+      xPhraseCount;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_161>> xPhraseSize;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(ffi.Pointer<Fts5Context>, ffi.Int32)>> xPhraseSize;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_162>> xInstCount;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>, ffi.Pointer<ffi.Int32>)>> xInstCount;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_163>> xInst;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>)>> xInst;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_164>> xRowid;
+  external ffi.Pointer<
+          ffi.NativeFunction<sqlite3_int64 Function(ffi.Pointer<Fts5Context>)>>
+      xRowid;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_165>> xColumnText;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Pointer<ffi.Int32>)>> xColumnText;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_166>> xColumnSize;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<Fts5Context>, ffi.Int32, ffi.Pointer<ffi.Int32>)>>
+      xColumnSize;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_168>> xQueryPhrase;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<Fts5ExtensionApi>,
+                          ffi.Pointer<Fts5Context>,
+                          ffi.Pointer<ffi.Void>)>>)>> xQueryPhrase;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_170>> xSetAuxdata;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>> xSetAuxdata;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_171>> xGetAuxdata;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Pointer<ffi.Void> Function(
+              ffi.Pointer<Fts5Context>, ffi.Int32)>> xGetAuxdata;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_172>> xPhraseFirst;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Int32,
+              ffi.Pointer<Fts5PhraseIter>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>)>> xPhraseFirst;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_173>> xPhraseNext;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Pointer<Fts5PhraseIter>,
+              ffi.Pointer<ffi.Int32>,
+              ffi.Pointer<ffi.Int32>)>> xPhraseNext;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_174>> xPhraseFirstColumn;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Int32,
+              ffi.Pointer<Fts5PhraseIter>,
+              ffi.Pointer<ffi.Int32>)>> xPhraseFirstColumn;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_175>> xPhraseNextColumn;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Void Function(
+              ffi.Pointer<Fts5Context>,
+              ffi.Pointer<Fts5PhraseIter>,
+              ffi.Pointer<ffi.Int32>)>> xPhraseNextColumn;
+}
+
+class Fts5Context extends ffi.Opaque {}
+
+class Fts5PhraseIter extends ffi.Struct {
+  external ffi.Pointer<ffi.Uint8> a;
+
+  external ffi.Pointer<ffi.Uint8> b;
 }
 
 class Fts5Tokenizer extends ffi.Opaque {}
 
 class fts5_tokenizer extends ffi.Struct {
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_176>> xCreate;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<ffi.Void>,
+              ffi.Pointer<ffi.Pointer<ffi.Int8>>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Pointer<Fts5Tokenizer>>)>> xCreate;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_177>> xDelete;
+  external ffi.Pointer<
+          ffi.NativeFunction<ffi.Void Function(ffi.Pointer<Fts5Tokenizer>)>>
+      xDelete;
 
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_179>> xTokenize;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<Fts5Tokenizer>,
+              ffi.Pointer<ffi.Void>,
+              ffi.Int32,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Int32,
+              ffi.Pointer<
+                  ffi.NativeFunction<
+                      ffi.Int32 Function(
+                          ffi.Pointer<ffi.Void>,
+                          ffi.Int32,
+                          ffi.Pointer<ffi.Int8>,
+                          ffi.Int32,
+                          ffi.Int32,
+                          ffi.Int32)>>)>> xTokenize;
 }
 
 class fts5_api extends ffi.Struct {
@@ -10428,15 +12065,50 @@
   external int iVersion;
 
   /// Create a new tokenizer
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_181>> xCreateTokenizer;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<fts5_api>,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Pointer<ffi.Void>,
+                  ffi.Pointer<fts5_tokenizer>,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>
+      xCreateTokenizer;
 
   /// Find an existing tokenizer
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_182>> xFindTokenizer;
+  external ffi.Pointer<
+      ffi.NativeFunction<
+          ffi.Int32 Function(
+              ffi.Pointer<fts5_api>,
+              ffi.Pointer<ffi.Int8>,
+              ffi.Pointer<ffi.Pointer<ffi.Void>>,
+              ffi.Pointer<fts5_tokenizer>)>> xFindTokenizer;
 
   /// Create a new auxiliary function
-  external ffi.Pointer<ffi.NativeFunction<_typedefC_184>> xCreateFunction;
+  external ffi.Pointer<
+          ffi.NativeFunction<
+              ffi.Int32 Function(
+                  ffi.Pointer<fts5_api>,
+                  ffi.Pointer<ffi.Int8>,
+                  ffi.Pointer<ffi.Void>,
+                  fts5_extension_function,
+                  ffi.Pointer<
+                      ffi.NativeFunction<
+                          ffi.Void Function(ffi.Pointer<ffi.Void>)>>)>>
+      xCreateFunction;
 }
 
+typedef fts5_extension_function = ffi.Pointer<
+    ffi.NativeFunction<
+        ffi.Void Function(
+            ffi.Pointer<Fts5ExtensionApi>,
+            ffi.Pointer<Fts5Context>,
+            ffi.Pointer<sqlite3_context>,
+            ffi.Int32,
+            ffi.Pointer<ffi.Pointer<sqlite3_value>>)>>;
+
 const String SQLITE_VERSION = '3.32.3';
 
 const int SQLITE_VERSION_NUMBER = 3032003;
@@ -11317,3801 +12989,3 @@
 const int FTS5_TOKENIZE_AUX = 8;
 
 const int FTS5_TOKEN_COLOCATED = 1;
-
-typedef _c_sqlite3_libversion = ffi.Pointer<ffi.Int8> Function();
-
-typedef _dart_sqlite3_libversion = ffi.Pointer<ffi.Int8> Function();
-
-typedef _c_sqlite3_sourceid = ffi.Pointer<ffi.Int8> Function();
-
-typedef _dart_sqlite3_sourceid = ffi.Pointer<ffi.Int8> Function();
-
-typedef _c_sqlite3_libversion_number = ffi.Int32 Function();
-
-typedef _dart_sqlite3_libversion_number = int Function();
-
-typedef _c_sqlite3_compileoption_used = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> zOptName,
-);
-
-typedef _dart_sqlite3_compileoption_used = int Function(
-  ffi.Pointer<ffi.Int8> zOptName,
-);
-
-typedef _c_sqlite3_compileoption_get = ffi.Pointer<ffi.Int8> Function(
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_compileoption_get = ffi.Pointer<ffi.Int8> Function(
-  int N,
-);
-
-typedef _c_sqlite3_threadsafe = ffi.Int32 Function();
-
-typedef _dart_sqlite3_threadsafe = int Function();
-
-typedef _c_sqlite3_close = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_close = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_close_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_close_v2 = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _typedefC_1 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-);
-
-typedef _c_sqlite3_exec = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> sql,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_1>> callback,
-  ffi.Pointer<ffi.Void> arg3,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> errmsg,
-);
-
-typedef _dart_sqlite3_exec = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> sql,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_1>> callback,
-  ffi.Pointer<ffi.Void> arg3,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> errmsg,
-);
-
-typedef _c_sqlite3_initialize = ffi.Int32 Function();
-
-typedef _dart_sqlite3_initialize = int Function();
-
-typedef _c_sqlite3_shutdown = ffi.Int32 Function();
-
-typedef _dart_sqlite3_shutdown = int Function();
-
-typedef _c_sqlite3_os_init = ffi.Int32 Function();
-
-typedef _dart_sqlite3_os_init = int Function();
-
-typedef _c_sqlite3_os_end = ffi.Int32 Function();
-
-typedef _dart_sqlite3_os_end = int Function();
-
-typedef _c_sqlite3_config = ffi.Int32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_sqlite3_config = int Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_db_config = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int32 op,
-);
-
-typedef _dart_sqlite3_db_config = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  int op,
-);
-
-typedef _c_sqlite3_extended_result_codes = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int32 onoff,
-);
-
-typedef _dart_sqlite3_extended_result_codes = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  int onoff,
-);
-
-typedef _c_sqlite3_last_insert_rowid = ffi.Int64 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_last_insert_rowid = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_set_last_insert_rowid = ffi.Void Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int64 arg1,
-);
-
-typedef _dart_sqlite3_set_last_insert_rowid = void Function(
-  ffi.Pointer<sqlite3> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_changes = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_changes = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_total_changes = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_total_changes = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_interrupt = ffi.Void Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_interrupt = void Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_complete = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> sql,
-);
-
-typedef _dart_sqlite3_complete = int Function(
-  ffi.Pointer<ffi.Int8> sql,
-);
-
-typedef _c_sqlite3_complete16 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> sql,
-);
-
-typedef _dart_sqlite3_complete16 = int Function(
-  ffi.Pointer<ffi.Void> sql,
-);
-
-typedef _typedefC_44 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-);
-
-typedef _c_sqlite3_busy_handler = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_44>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _dart_sqlite3_busy_handler = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_44>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _c_sqlite3_busy_timeout = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int32 ms,
-);
-
-typedef _dart_sqlite3_busy_timeout = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  int ms,
-);
-
-typedef _c_sqlite3_get_table = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Int8>>> pazResult,
-  ffi.Pointer<ffi.Int32> pnRow,
-  ffi.Pointer<ffi.Int32> pnColumn,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzErrmsg,
-);
-
-typedef _dart_sqlite3_get_table = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  ffi.Pointer<ffi.Pointer<ffi.Pointer<ffi.Int8>>> pazResult,
-  ffi.Pointer<ffi.Int32> pnRow,
-  ffi.Pointer<ffi.Int32> pnColumn,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzErrmsg,
-);
-
-typedef _c_sqlite3_free_table = ffi.Void Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> result,
-);
-
-typedef _dart_sqlite3_free_table = void Function(
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> result,
-);
-
-typedef _c_sqlite3_mprintf = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _dart_sqlite3_mprintf = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _c_sqlite3_snprintf = ffi.Pointer<ffi.Int8> Function(
-  ffi.Int32 arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-);
-
-typedef _dart_sqlite3_snprintf = ffi.Pointer<ffi.Int8> Function(
-  int arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-);
-
-typedef _c_sqlite3_malloc = ffi.Pointer<ffi.Void> Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_sqlite3_malloc = ffi.Pointer<ffi.Void> Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_malloc64 = ffi.Pointer<ffi.Void> Function(
-  ffi.Uint64 arg0,
-);
-
-typedef _dart_sqlite3_malloc64 = ffi.Pointer<ffi.Void> Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_realloc = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_realloc = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_realloc64 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> arg0,
-  ffi.Uint64 arg1,
-);
-
-typedef _dart_sqlite3_realloc64 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_free = ffi.Void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_sqlite3_free = void Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_sqlite3_msize = ffi.Uint64 Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_sqlite3_msize = int Function(
-  ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _c_sqlite3_memory_used = ffi.Int64 Function();
-
-typedef _dart_sqlite3_memory_used = int Function();
-
-typedef _c_sqlite3_memory_highwater = ffi.Int64 Function(
-  ffi.Int32 resetFlag,
-);
-
-typedef _dart_sqlite3_memory_highwater = int Function(
-  int resetFlag,
-);
-
-typedef _c_sqlite3_randomness = ffi.Void Function(
-  ffi.Int32 N,
-  ffi.Pointer<ffi.Void> P,
-);
-
-typedef _dart_sqlite3_randomness = void Function(
-  int N,
-  ffi.Pointer<ffi.Void> P,
-);
-
-typedef _typedefC_45 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _c_sqlite3_set_authorizer = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_45>> xAuth,
-  ffi.Pointer<ffi.Void> pUserData,
-);
-
-typedef _dart_sqlite3_set_authorizer = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_45>> xAuth,
-  ffi.Pointer<ffi.Void> pUserData,
-);
-
-typedef _typedefC_46 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _c_sqlite3_trace = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_46>> xTrace,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _dart_sqlite3_trace = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_46>> xTrace,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _typedefC_47 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Uint64,
-);
-
-typedef _c_sqlite3_profile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_47>> xProfile,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _dart_sqlite3_profile = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_47>> xProfile,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _typedefC_48 = ffi.Int32 Function(
-  ffi.Uint32,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_trace_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Uint32 uMask,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_48>> xCallback,
-  ffi.Pointer<ffi.Void> pCtx,
-);
-
-typedef _dart_sqlite3_trace_v2 = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  int uMask,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_48>> xCallback,
-  ffi.Pointer<ffi.Void> pCtx,
-);
-
-typedef _typedefC_49 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_progress_handler = ffi.Void Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_49>> arg2,
-  ffi.Pointer<ffi.Void> arg3,
-);
-
-typedef _dart_sqlite3_progress_handler = void Function(
-  ffi.Pointer<sqlite3> arg0,
-  int arg1,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_49>> arg2,
-  ffi.Pointer<ffi.Void> arg3,
-);
-
-typedef _c_sqlite3_open = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> filename,
-  ffi.Pointer<ffi.Pointer<sqlite3>> ppDb,
-);
-
-typedef _dart_sqlite3_open = int Function(
-  ffi.Pointer<ffi.Int8> filename,
-  ffi.Pointer<ffi.Pointer<sqlite3>> ppDb,
-);
-
-typedef _c_sqlite3_open16 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void> filename,
-  ffi.Pointer<ffi.Pointer<sqlite3>> ppDb,
-);
-
-typedef _dart_sqlite3_open16 = int Function(
-  ffi.Pointer<ffi.Void> filename,
-  ffi.Pointer<ffi.Pointer<sqlite3>> ppDb,
-);
-
-typedef _c_sqlite3_open_v2 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> filename,
-  ffi.Pointer<ffi.Pointer<sqlite3>> ppDb,
-  ffi.Int32 flags,
-  ffi.Pointer<ffi.Int8> zVfs,
-);
-
-typedef _dart_sqlite3_open_v2 = int Function(
-  ffi.Pointer<ffi.Int8> filename,
-  ffi.Pointer<ffi.Pointer<sqlite3>> ppDb,
-  int flags,
-  ffi.Pointer<ffi.Int8> zVfs,
-);
-
-typedef _c_sqlite3_uri_parameter = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> zFilename,
-  ffi.Pointer<ffi.Int8> zParam,
-);
-
-typedef _dart_sqlite3_uri_parameter = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> zFilename,
-  ffi.Pointer<ffi.Int8> zParam,
-);
-
-typedef _c_sqlite3_uri_boolean = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> zFile,
-  ffi.Pointer<ffi.Int8> zParam,
-  ffi.Int32 bDefault,
-);
-
-typedef _dart_sqlite3_uri_boolean = int Function(
-  ffi.Pointer<ffi.Int8> zFile,
-  ffi.Pointer<ffi.Int8> zParam,
-  int bDefault,
-);
-
-typedef _c_sqlite3_uri_int64 = ffi.Int64 Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  ffi.Int64 arg2,
-);
-
-typedef _dart_sqlite3_uri_int64 = int Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_uri_key = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> zFilename,
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_uri_key = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> zFilename,
-  int N,
-);
-
-typedef _c_sqlite3_filename_database = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _dart_sqlite3_filename_database = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _c_sqlite3_filename_journal = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _dart_sqlite3_filename_journal = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _c_sqlite3_filename_wal = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _dart_sqlite3_filename_wal = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _c_sqlite3_database_file_object = ffi.Pointer<sqlite3_file> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _dart_sqlite3_database_file_object = ffi.Pointer<sqlite3_file> Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _c_sqlite3_create_filename = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> zDatabase,
-  ffi.Pointer<ffi.Int8> zJournal,
-  ffi.Pointer<ffi.Int8> zWal,
-  ffi.Int32 nParam,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> azParam,
-);
-
-typedef _dart_sqlite3_create_filename = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<ffi.Int8> zDatabase,
-  ffi.Pointer<ffi.Int8> zJournal,
-  ffi.Pointer<ffi.Int8> zWal,
-  int nParam,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> azParam,
-);
-
-typedef _c_sqlite3_free_filename = ffi.Void Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _dart_sqlite3_free_filename = void Function(
-  ffi.Pointer<ffi.Int8> arg0,
-);
-
-typedef _c_sqlite3_errcode = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-);
-
-typedef _dart_sqlite3_errcode = int Function(
-  ffi.Pointer<sqlite3> db,
-);
-
-typedef _c_sqlite3_extended_errcode = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-);
-
-typedef _dart_sqlite3_extended_errcode = int Function(
-  ffi.Pointer<sqlite3> db,
-);
-
-typedef _c_sqlite3_errmsg = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_errmsg = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_errmsg16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_errmsg16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_errstr = ffi.Pointer<ffi.Int8> Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_sqlite3_errstr = ffi.Pointer<ffi.Int8> Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_limit = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int32 id,
-  ffi.Int32 newVal,
-);
-
-typedef _dart_sqlite3_limit = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  int id,
-  int newVal,
-);
-
-typedef _c_sqlite3_prepare = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  ffi.Int32 nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzTail,
-);
-
-typedef _dart_sqlite3_prepare = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  int nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzTail,
-);
-
-typedef _c_sqlite3_prepare_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  ffi.Int32 nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzTail,
-);
-
-typedef _dart_sqlite3_prepare_v2 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  int nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzTail,
-);
-
-typedef _c_sqlite3_prepare_v3 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  ffi.Int32 nByte,
-  ffi.Uint32 prepFlags,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzTail,
-);
-
-typedef _dart_sqlite3_prepare_v3 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSql,
-  int nByte,
-  int prepFlags,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzTail,
-);
-
-typedef _c_sqlite3_prepare16 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zSql,
-  ffi.Int32 nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> pzTail,
-);
-
-typedef _dart_sqlite3_prepare16 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zSql,
-  int nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> pzTail,
-);
-
-typedef _c_sqlite3_prepare16_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zSql,
-  ffi.Int32 nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> pzTail,
-);
-
-typedef _dart_sqlite3_prepare16_v2 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zSql,
-  int nByte,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> pzTail,
-);
-
-typedef _c_sqlite3_prepare16_v3 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zSql,
-  ffi.Int32 nByte,
-  ffi.Uint32 prepFlags,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> pzTail,
-);
-
-typedef _dart_sqlite3_prepare16_v3 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zSql,
-  int nByte,
-  int prepFlags,
-  ffi.Pointer<ffi.Pointer<sqlite3_stmt>> ppStmt,
-  ffi.Pointer<ffi.Pointer<ffi.Void>> pzTail,
-);
-
-typedef _c_sqlite3_sql = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_sql = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_expanded_sql = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_expanded_sql = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_normalized_sql = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_normalized_sql = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_stmt_readonly = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_stmt_readonly = int Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_stmt_isexplain = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_stmt_isexplain = int Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_stmt_busy = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _dart_sqlite3_stmt_busy = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _typedefC_50 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_bind_blob = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  ffi.Int32 n,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_50>> arg4,
-);
-
-typedef _dart_sqlite3_bind_blob = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  int n,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_50>> arg4,
-);
-
-typedef _typedefC_51 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_bind_blob64 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  ffi.Uint64 arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_51>> arg4,
-);
-
-typedef _dart_sqlite3_bind_blob64 = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  int arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_51>> arg4,
-);
-
-typedef _c_sqlite3_bind_double = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Double arg2,
-);
-
-typedef _dart_sqlite3_bind_double = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  double arg2,
-);
-
-typedef _c_sqlite3_bind_int = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Int32 arg2,
-);
-
-typedef _dart_sqlite3_bind_int = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_bind_int64 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Int64 arg2,
-);
-
-typedef _dart_sqlite3_bind_int64 = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_bind_null = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_bind_null = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _typedefC_52 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_bind_text = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-  ffi.Int32 arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_52>> arg4,
-);
-
-typedef _dart_sqlite3_bind_text = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-  int arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_52>> arg4,
-);
-
-typedef _typedefC_53 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_bind_text16 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  ffi.Int32 arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_53>> arg4,
-);
-
-typedef _dart_sqlite3_bind_text16 = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  int arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_53>> arg4,
-);
-
-typedef _typedefC_54 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_bind_text64 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-  ffi.Uint64 arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_54>> arg4,
-  ffi.Uint8 encoding,
-);
-
-typedef _dart_sqlite3_bind_text64 = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-  int arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_54>> arg4,
-  int encoding,
-);
-
-typedef _c_sqlite3_bind_value = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<sqlite3_value> arg2,
-);
-
-typedef _dart_sqlite3_bind_value = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  ffi.Pointer<sqlite3_value> arg2,
-);
-
-typedef _typedefC_55 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_bind_pointer = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  ffi.Pointer<ffi.Int8> arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_55>> arg4,
-);
-
-typedef _dart_sqlite3_bind_pointer = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  ffi.Pointer<ffi.Void> arg2,
-  ffi.Pointer<ffi.Int8> arg3,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_55>> arg4,
-);
-
-typedef _c_sqlite3_bind_zeroblob = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Int32 n,
-);
-
-typedef _dart_sqlite3_bind_zeroblob = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  int n,
-);
-
-typedef _c_sqlite3_bind_zeroblob64 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-  ffi.Uint64 arg2,
-);
-
-typedef _dart_sqlite3_bind_zeroblob64 = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_bind_parameter_count = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _dart_sqlite3_bind_parameter_count = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _c_sqlite3_bind_parameter_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_bind_parameter_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_bind_parameter_index = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Pointer<ffi.Int8> zName,
-);
-
-typedef _dart_sqlite3_bind_parameter_index = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Pointer<ffi.Int8> zName,
-);
-
-typedef _c_sqlite3_clear_bindings = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _dart_sqlite3_clear_bindings = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _c_sqlite3_column_count = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_column_count = int Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_column_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_column_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int N,
-);
-
-typedef _c_sqlite3_column_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_column_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int N,
-);
-
-typedef _c_sqlite3_column_database_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_database_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_column_database_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_database_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_column_table_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_table_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_column_table_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_table_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_column_origin_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_origin_name = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_column_origin_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_origin_name16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_column_decltype = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_decltype = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_column_decltype16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_column_decltype16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_step = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _dart_sqlite3_step = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _c_sqlite3_data_count = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_data_count = int Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_column_blob = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_blob = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_double = ffi.Double Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_double = double Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_int = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_int = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_int64 = ffi.Int64 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_int64 = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_text = ffi.Pointer<ffi.Uint8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_text = ffi.Pointer<ffi.Uint8> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_text16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_text16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_value = ffi.Pointer<sqlite3_value> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_value = ffi.Pointer<sqlite3_value> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_bytes = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_bytes = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_bytes16 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_bytes16 = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_column_type = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 iCol,
-);
-
-typedef _dart_sqlite3_column_type = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int iCol,
-);
-
-typedef _c_sqlite3_finalize = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_finalize = int Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _c_sqlite3_reset = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_reset = int Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _typedefC_56 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_57 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_58 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-);
-
-typedef _c_sqlite3_create_function = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFunctionName,
-  ffi.Int32 nArg,
-  ffi.Int32 eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_56>> xFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_57>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_58>> xFinal,
-);
-
-typedef _dart_sqlite3_create_function = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFunctionName,
-  int nArg,
-  int eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_56>> xFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_57>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_58>> xFinal,
-);
-
-typedef _typedefC_59 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_60 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_61 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-);
-
-typedef _c_sqlite3_create_function16 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zFunctionName,
-  ffi.Int32 nArg,
-  ffi.Int32 eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_59>> xFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_60>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_61>> xFinal,
-);
-
-typedef _dart_sqlite3_create_function16 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Void> zFunctionName,
-  int nArg,
-  int eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_59>> xFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_60>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_61>> xFinal,
-);
-
-typedef _typedefC_62 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_63 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_64 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-);
-
-typedef _typedefC_65 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_create_function_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFunctionName,
-  ffi.Int32 nArg,
-  ffi.Int32 eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_62>> xFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_63>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_64>> xFinal,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_65>> xDestroy,
-);
-
-typedef _dart_sqlite3_create_function_v2 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFunctionName,
-  int nArg,
-  int eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_62>> xFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_63>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_64>> xFinal,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_65>> xDestroy,
-);
-
-typedef _typedefC_66 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_67 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-);
-
-typedef _typedefC_68 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-);
-
-typedef _typedefC_69 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_70 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_create_window_function = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFunctionName,
-  ffi.Int32 nArg,
-  ffi.Int32 eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_66>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_67>> xFinal,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_68>> xValue,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_69>> xInverse,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_70>> xDestroy,
-);
-
-typedef _dart_sqlite3_create_window_function = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFunctionName,
-  int nArg,
-  int eTextRep,
-  ffi.Pointer<ffi.Void> pApp,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_66>> xStep,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_67>> xFinal,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_68>> xValue,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_69>> xInverse,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_70>> xDestroy,
-);
-
-typedef _c_sqlite3_aggregate_count = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _dart_sqlite3_aggregate_count = int Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _c_sqlite3_expired = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _dart_sqlite3_expired = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _c_sqlite3_transfer_bindings = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Pointer<sqlite3_stmt> arg1,
-);
-
-typedef _dart_sqlite3_transfer_bindings = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Pointer<sqlite3_stmt> arg1,
-);
-
-typedef _c_sqlite3_global_recover = ffi.Int32 Function();
-
-typedef _dart_sqlite3_global_recover = int Function();
-
-typedef _c_sqlite3_thread_cleanup = ffi.Void Function();
-
-typedef _dart_sqlite3_thread_cleanup = void Function();
-
-typedef _typedefC_71 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int64,
-  ffi.Int32,
-);
-
-typedef _c_sqlite3_memory_alarm = ffi.Int32 Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_71>> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Int64 arg2,
-);
-
-typedef _dart_sqlite3_memory_alarm = int Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_71>> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_value_blob = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_blob = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_double = ffi.Double Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_double = double Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_int = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_int = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_int64 = ffi.Int64 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_int64 = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_pointer = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-);
-
-typedef _dart_sqlite3_value_pointer = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-);
-
-typedef _c_sqlite3_value_text = ffi.Pointer<ffi.Uint8> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_text = ffi.Pointer<ffi.Uint8> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_text16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_text16 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_text16le = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_text16le = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_text16be = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_text16be = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_bytes = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_bytes = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_bytes16 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_bytes16 = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_type = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_type = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_numeric_type = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_numeric_type = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_nochange = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_nochange = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_frombind = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_frombind = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_subtype = ffi.Uint32 Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_subtype = int Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_dup = ffi.Pointer<sqlite3_value> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_dup = ffi.Pointer<sqlite3_value> Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_value_free = ffi.Void Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _dart_sqlite3_value_free = void Function(
-  ffi.Pointer<sqlite3_value> arg0,
-);
-
-typedef _c_sqlite3_aggregate_context = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Int32 nBytes,
-);
-
-typedef _dart_sqlite3_aggregate_context = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int nBytes,
-);
-
-typedef _c_sqlite3_user_data = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _dart_sqlite3_user_data = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _c_sqlite3_context_db_handle = ffi.Pointer<sqlite3> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _dart_sqlite3_context_db_handle = ffi.Pointer<sqlite3> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _c_sqlite3_get_auxdata = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_get_auxdata = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int N,
-);
-
-typedef _typedefC_72 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_set_auxdata = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Int32 N,
-  ffi.Pointer<ffi.Void> arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_72>> arg3,
-);
-
-typedef _dart_sqlite3_set_auxdata = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int N,
-  ffi.Pointer<ffi.Void> arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_72>> arg3,
-);
-
-typedef _typedefC_73 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_blob = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Int32 arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_73>> arg3,
-);
-
-typedef _dart_sqlite3_result_blob = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  int arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_73>> arg3,
-);
-
-typedef _typedefC_74 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_blob64 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Uint64 arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_74>> arg3,
-);
-
-typedef _dart_sqlite3_result_blob64 = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  int arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_74>> arg3,
-);
-
-typedef _c_sqlite3_result_double = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Double arg1,
-);
-
-typedef _dart_sqlite3_result_double = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  double arg1,
-);
-
-typedef _c_sqlite3_result_error = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  ffi.Int32 arg2,
-);
-
-typedef _dart_sqlite3_result_error = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_result_error16 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Int32 arg2,
-);
-
-typedef _dart_sqlite3_result_error16 = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_result_error_toobig = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _dart_sqlite3_result_error_toobig = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _c_sqlite3_result_error_nomem = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _dart_sqlite3_result_error_nomem = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _c_sqlite3_result_error_code = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_result_error_code = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_result_int = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_result_int = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_result_int64 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Int64 arg1,
-);
-
-typedef _dart_sqlite3_result_int64 = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_result_null = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _dart_sqlite3_result_null = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _typedefC_75 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_text = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  ffi.Int32 arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_75>> arg3,
-);
-
-typedef _dart_sqlite3_result_text = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  int arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_75>> arg3,
-);
-
-typedef _typedefC_76 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_text64 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  ffi.Uint64 arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_76>> arg3,
-  ffi.Uint8 encoding,
-);
-
-typedef _dart_sqlite3_result_text64 = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  int arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_76>> arg3,
-  int encoding,
-);
-
-typedef _typedefC_77 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_text16 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Int32 arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_77>> arg3,
-);
-
-typedef _dart_sqlite3_result_text16 = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  int arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_77>> arg3,
-);
-
-typedef _typedefC_78 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_text16le = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Int32 arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_78>> arg3,
-);
-
-typedef _dart_sqlite3_result_text16le = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  int arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_78>> arg3,
-);
-
-typedef _typedefC_79 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_text16be = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Int32 arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_79>> arg3,
-);
-
-typedef _dart_sqlite3_result_text16be = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  int arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_79>> arg3,
-);
-
-typedef _c_sqlite3_result_value = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<sqlite3_value> arg1,
-);
-
-typedef _dart_sqlite3_result_value = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<sqlite3_value> arg1,
-);
-
-typedef _typedefC_80 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_result_pointer = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_80>> arg3,
-);
-
-typedef _dart_sqlite3_result_pointer = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Pointer<ffi.Int8> arg2,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_80>> arg3,
-);
-
-typedef _c_sqlite3_result_zeroblob = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Int32 n,
-);
-
-typedef _dart_sqlite3_result_zeroblob = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int n,
-);
-
-typedef _c_sqlite3_result_zeroblob64 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Uint64 n,
-);
-
-typedef _dart_sqlite3_result_zeroblob64 = int Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int n,
-);
-
-typedef _c_sqlite3_result_subtype = ffi.Void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  ffi.Uint32 arg1,
-);
-
-typedef _dart_sqlite3_result_subtype = void Function(
-  ffi.Pointer<sqlite3_context> arg0,
-  int arg1,
-);
-
-typedef _typedefC_81 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_create_collation = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zName,
-  ffi.Int32 eTextRep,
-  ffi.Pointer<ffi.Void> pArg,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_81>> xCompare,
-);
-
-typedef _dart_sqlite3_create_collation = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zName,
-  int eTextRep,
-  ffi.Pointer<ffi.Void> pArg,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_81>> xCompare,
-);
-
-typedef _typedefC_82 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_83 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_create_collation_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zName,
-  ffi.Int32 eTextRep,
-  ffi.Pointer<ffi.Void> pArg,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_82>> xCompare,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_83>> xDestroy,
-);
-
-typedef _dart_sqlite3_create_collation_v2 = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zName,
-  int eTextRep,
-  ffi.Pointer<ffi.Void> pArg,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_82>> xCompare,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_83>> xDestroy,
-);
-
-typedef _typedefC_84 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_create_collation16 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Void> zName,
-  ffi.Int32 eTextRep,
-  ffi.Pointer<ffi.Void> pArg,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_84>> xCompare,
-);
-
-typedef _dart_sqlite3_create_collation16 = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Void> zName,
-  int eTextRep,
-  ffi.Pointer<ffi.Void> pArg,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_84>> xCompare,
-);
-
-typedef _typedefC_85 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<sqlite3>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _c_sqlite3_collation_needed = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_85>> arg2,
-);
-
-typedef _dart_sqlite3_collation_needed = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_85>> arg2,
-);
-
-typedef _typedefC_86 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<sqlite3>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_collation_needed16 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_86>> arg2,
-);
-
-typedef _dart_sqlite3_collation_needed16 = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Void> arg1,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_86>> arg2,
-);
-
-typedef _c_sqlite3_sleep = ffi.Int32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_sqlite3_sleep = int Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_win32_set_directory = ffi.Int32 Function(
-  ffi.Uint64 type,
-  ffi.Pointer<ffi.Void> zValue,
-);
-
-typedef _dart_sqlite3_win32_set_directory = int Function(
-  int type,
-  ffi.Pointer<ffi.Void> zValue,
-);
-
-typedef _c_sqlite3_win32_set_directory8 = ffi.Int32 Function(
-  ffi.Uint64 type,
-  ffi.Pointer<ffi.Int8> zValue,
-);
-
-typedef _dart_sqlite3_win32_set_directory8 = int Function(
-  int type,
-  ffi.Pointer<ffi.Int8> zValue,
-);
-
-typedef _c_sqlite3_win32_set_directory16 = ffi.Int32 Function(
-  ffi.Uint64 type,
-  ffi.Pointer<ffi.Void> zValue,
-);
-
-typedef _dart_sqlite3_win32_set_directory16 = int Function(
-  int type,
-  ffi.Pointer<ffi.Void> zValue,
-);
-
-typedef _c_sqlite3_get_autocommit = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_get_autocommit = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_db_handle = ffi.Pointer<sqlite3> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _dart_sqlite3_db_handle = ffi.Pointer<sqlite3> Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _c_sqlite3_db_filename = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDbName,
-);
-
-typedef _dart_sqlite3_db_filename = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDbName,
-);
-
-typedef _c_sqlite3_db_readonly = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDbName,
-);
-
-typedef _dart_sqlite3_db_readonly = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDbName,
-);
-
-typedef _c_sqlite3_next_stmt = ffi.Pointer<sqlite3_stmt> Function(
-  ffi.Pointer<sqlite3> pDb,
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _dart_sqlite3_next_stmt = ffi.Pointer<sqlite3_stmt> Function(
-  ffi.Pointer<sqlite3> pDb,
-  ffi.Pointer<sqlite3_stmt> pStmt,
-);
-
-typedef _typedefC_87 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_commit_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_87>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _dart_sqlite3_commit_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_87>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _typedefC_88 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_rollback_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_88>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _dart_sqlite3_rollback_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_88>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _typedefC_89 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int64,
-);
-
-typedef _c_sqlite3_update_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_89>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _dart_sqlite3_update_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_89>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _c_sqlite3_enable_shared_cache = ffi.Int32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_sqlite3_enable_shared_cache = int Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_release_memory = ffi.Int32 Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_sqlite3_release_memory = int Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_db_release_memory = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_db_release_memory = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_soft_heap_limit64 = ffi.Int64 Function(
-  ffi.Int64 N,
-);
-
-typedef _dart_sqlite3_soft_heap_limit64 = int Function(
-  int N,
-);
-
-typedef _c_sqlite3_hard_heap_limit64 = ffi.Int64 Function(
-  ffi.Int64 N,
-);
-
-typedef _dart_sqlite3_hard_heap_limit64 = int Function(
-  int N,
-);
-
-typedef _c_sqlite3_soft_heap_limit = ffi.Void Function(
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_soft_heap_limit = void Function(
-  int N,
-);
-
-typedef _c_sqlite3_table_column_metadata = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDbName,
-  ffi.Pointer<ffi.Int8> zTableName,
-  ffi.Pointer<ffi.Int8> zColumnName,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzDataType,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzCollSeq,
-  ffi.Pointer<ffi.Int32> pNotNull,
-  ffi.Pointer<ffi.Int32> pPrimaryKey,
-  ffi.Pointer<ffi.Int32> pAutoinc,
-);
-
-typedef _dart_sqlite3_table_column_metadata = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDbName,
-  ffi.Pointer<ffi.Int8> zTableName,
-  ffi.Pointer<ffi.Int8> zColumnName,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzDataType,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzCollSeq,
-  ffi.Pointer<ffi.Int32> pNotNull,
-  ffi.Pointer<ffi.Int32> pPrimaryKey,
-  ffi.Pointer<ffi.Int32> pAutoinc,
-);
-
-typedef _c_sqlite3_load_extension = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFile,
-  ffi.Pointer<ffi.Int8> zProc,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzErrMsg,
-);
-
-typedef _dart_sqlite3_load_extension = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zFile,
-  ffi.Pointer<ffi.Int8> zProc,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> pzErrMsg,
-);
-
-typedef _c_sqlite3_enable_load_extension = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Int32 onoff,
-);
-
-typedef _dart_sqlite3_enable_load_extension = int Function(
-  ffi.Pointer<sqlite3> db,
-  int onoff,
-);
-
-typedef _typedefC_90 = ffi.Void Function();
-
-typedef _c_sqlite3_auto_extension = ffi.Int32 Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_90>> xEntryPoint,
-);
-
-typedef _dart_sqlite3_auto_extension = int Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_90>> xEntryPoint,
-);
-
-typedef _typedefC_91 = ffi.Void Function();
-
-typedef _c_sqlite3_cancel_auto_extension = ffi.Int32 Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_91>> xEntryPoint,
-);
-
-typedef _dart_sqlite3_cancel_auto_extension = int Function(
-  ffi.Pointer<ffi.NativeFunction<_typedefC_91>> xEntryPoint,
-);
-
-typedef _c_sqlite3_reset_auto_extension = ffi.Void Function();
-
-typedef _dart_sqlite3_reset_auto_extension = void Function();
-
-typedef _c_sqlite3_create_module = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zName,
-  ffi.Pointer<sqlite3_module> p,
-  ffi.Pointer<ffi.Void> pClientData,
-);
-
-typedef _dart_sqlite3_create_module = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zName,
-  ffi.Pointer<sqlite3_module> p,
-  ffi.Pointer<ffi.Void> pClientData,
-);
-
-typedef _typedefC_116 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_create_module_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zName,
-  ffi.Pointer<sqlite3_module> p,
-  ffi.Pointer<ffi.Void> pClientData,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_116>> xDestroy,
-);
-
-typedef _dart_sqlite3_create_module_v2 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zName,
-  ffi.Pointer<sqlite3_module> p,
-  ffi.Pointer<ffi.Void> pClientData,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_116>> xDestroy,
-);
-
-typedef _c_sqlite3_drop_modules = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> azKeep,
-);
-
-typedef _dart_sqlite3_drop_modules = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> azKeep,
-);
-
-typedef _c_sqlite3_declare_vtab = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zSQL,
-);
-
-typedef _dart_sqlite3_declare_vtab = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zSQL,
-);
-
-typedef _c_sqlite3_overload_function = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zFuncName,
-  ffi.Int32 nArg,
-);
-
-typedef _dart_sqlite3_overload_function = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zFuncName,
-  int nArg,
-);
-
-typedef _c_sqlite3_blob_open = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zDb,
-  ffi.Pointer<ffi.Int8> zTable,
-  ffi.Pointer<ffi.Int8> zColumn,
-  ffi.Int64 iRow,
-  ffi.Int32 flags,
-  ffi.Pointer<ffi.Pointer<sqlite3_blob>> ppBlob,
-);
-
-typedef _dart_sqlite3_blob_open = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zDb,
-  ffi.Pointer<ffi.Int8> zTable,
-  ffi.Pointer<ffi.Int8> zColumn,
-  int iRow,
-  int flags,
-  ffi.Pointer<ffi.Pointer<sqlite3_blob>> ppBlob,
-);
-
-typedef _c_sqlite3_blob_reopen = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-  ffi.Int64 arg1,
-);
-
-typedef _dart_sqlite3_blob_reopen = int Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_blob_close = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-);
-
-typedef _dart_sqlite3_blob_close = int Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-);
-
-typedef _c_sqlite3_blob_bytes = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-);
-
-typedef _dart_sqlite3_blob_bytes = int Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-);
-
-typedef _c_sqlite3_blob_read = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-  ffi.Pointer<ffi.Void> Z,
-  ffi.Int32 N,
-  ffi.Int32 iOffset,
-);
-
-typedef _dart_sqlite3_blob_read = int Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-  ffi.Pointer<ffi.Void> Z,
-  int N,
-  int iOffset,
-);
-
-typedef _c_sqlite3_blob_write = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-  ffi.Pointer<ffi.Void> z,
-  ffi.Int32 n,
-  ffi.Int32 iOffset,
-);
-
-typedef _dart_sqlite3_blob_write = int Function(
-  ffi.Pointer<sqlite3_blob> arg0,
-  ffi.Pointer<ffi.Void> z,
-  int n,
-  int iOffset,
-);
-
-typedef _c_sqlite3_vfs_find = ffi.Pointer<sqlite3_vfs> Function(
-  ffi.Pointer<ffi.Int8> zVfsName,
-);
-
-typedef _dart_sqlite3_vfs_find = ffi.Pointer<sqlite3_vfs> Function(
-  ffi.Pointer<ffi.Int8> zVfsName,
-);
-
-typedef _c_sqlite3_vfs_register = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs> arg0,
-  ffi.Int32 makeDflt,
-);
-
-typedef _dart_sqlite3_vfs_register = int Function(
-  ffi.Pointer<sqlite3_vfs> arg0,
-  int makeDflt,
-);
-
-typedef _c_sqlite3_vfs_unregister = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs> arg0,
-);
-
-typedef _dart_sqlite3_vfs_unregister = int Function(
-  ffi.Pointer<sqlite3_vfs> arg0,
-);
-
-typedef _c_sqlite3_mutex_alloc = ffi.Pointer<sqlite3_mutex> Function(
-  ffi.Int32 arg0,
-);
-
-typedef _dart_sqlite3_mutex_alloc = ffi.Pointer<sqlite3_mutex> Function(
-  int arg0,
-);
-
-typedef _c_sqlite3_mutex_free = ffi.Void Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _dart_sqlite3_mutex_free = void Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _c_sqlite3_mutex_enter = ffi.Void Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _dart_sqlite3_mutex_enter = void Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _c_sqlite3_mutex_try = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _dart_sqlite3_mutex_try = int Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _c_sqlite3_mutex_leave = ffi.Void Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _dart_sqlite3_mutex_leave = void Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _c_sqlite3_mutex_held = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _dart_sqlite3_mutex_held = int Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _c_sqlite3_mutex_notheld = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _dart_sqlite3_mutex_notheld = int Function(
-  ffi.Pointer<sqlite3_mutex> arg0,
-);
-
-typedef _c_sqlite3_db_mutex = ffi.Pointer<sqlite3_mutex> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_db_mutex = ffi.Pointer<sqlite3_mutex> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_file_control = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zDbName,
-  ffi.Int32 op,
-  ffi.Pointer<ffi.Void> arg3,
-);
-
-typedef _dart_sqlite3_file_control = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.Int8> zDbName,
-  int op,
-  ffi.Pointer<ffi.Void> arg3,
-);
-
-typedef _c_sqlite3_test_control = ffi.Int32 Function(
-  ffi.Int32 op,
-);
-
-typedef _dart_sqlite3_test_control = int Function(
-  int op,
-);
-
-typedef _c_sqlite3_keyword_count = ffi.Int32 Function();
-
-typedef _dart_sqlite3_keyword_count = int Function();
-
-typedef _c_sqlite3_keyword_name = ffi.Int32 Function(
-  ffi.Int32 arg0,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> arg1,
-  ffi.Pointer<ffi.Int32> arg2,
-);
-
-typedef _dart_sqlite3_keyword_name = int Function(
-  int arg0,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>> arg1,
-  ffi.Pointer<ffi.Int32> arg2,
-);
-
-typedef _c_sqlite3_keyword_check = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_keyword_check = int Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_str_new = ffi.Pointer<sqlite3_str> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_str_new = ffi.Pointer<sqlite3_str> Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_str_finish = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _dart_sqlite3_str_finish = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _c_sqlite3_str_appendf = ffi.Void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  ffi.Pointer<ffi.Int8> zFormat,
-);
-
-typedef _dart_sqlite3_str_appendf = void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  ffi.Pointer<ffi.Int8> zFormat,
-);
-
-typedef _c_sqlite3_str_append = ffi.Void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  ffi.Pointer<ffi.Int8> zIn,
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_str_append = void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  ffi.Pointer<ffi.Int8> zIn,
-  int N,
-);
-
-typedef _c_sqlite3_str_appendall = ffi.Void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  ffi.Pointer<ffi.Int8> zIn,
-);
-
-typedef _dart_sqlite3_str_appendall = void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  ffi.Pointer<ffi.Int8> zIn,
-);
-
-typedef _c_sqlite3_str_appendchar = ffi.Void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  ffi.Int32 N,
-  ffi.Int8 C,
-);
-
-typedef _dart_sqlite3_str_appendchar = void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-  int N,
-  int C,
-);
-
-typedef _c_sqlite3_str_reset = ffi.Void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _dart_sqlite3_str_reset = void Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _c_sqlite3_str_errcode = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _dart_sqlite3_str_errcode = int Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _c_sqlite3_str_length = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _dart_sqlite3_str_length = int Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _c_sqlite3_str_value = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _dart_sqlite3_str_value = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_str> arg0,
-);
-
-typedef _c_sqlite3_status = ffi.Int32 Function(
-  ffi.Int32 op,
-  ffi.Pointer<ffi.Int32> pCurrent,
-  ffi.Pointer<ffi.Int32> pHighwater,
-  ffi.Int32 resetFlag,
-);
-
-typedef _dart_sqlite3_status = int Function(
-  int op,
-  ffi.Pointer<ffi.Int32> pCurrent,
-  ffi.Pointer<ffi.Int32> pHighwater,
-  int resetFlag,
-);
-
-typedef _c_sqlite3_status64 = ffi.Int32 Function(
-  ffi.Int32 op,
-  ffi.Pointer<ffi.Int64> pCurrent,
-  ffi.Pointer<ffi.Int64> pHighwater,
-  ffi.Int32 resetFlag,
-);
-
-typedef _dart_sqlite3_status64 = int Function(
-  int op,
-  ffi.Pointer<ffi.Int64> pCurrent,
-  ffi.Pointer<ffi.Int64> pHighwater,
-  int resetFlag,
-);
-
-typedef _c_sqlite3_db_status = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int32 op,
-  ffi.Pointer<ffi.Int32> pCur,
-  ffi.Pointer<ffi.Int32> pHiwtr,
-  ffi.Int32 resetFlg,
-);
-
-typedef _dart_sqlite3_db_status = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  int op,
-  ffi.Pointer<ffi.Int32> pCur,
-  ffi.Pointer<ffi.Int32> pHiwtr,
-  int resetFlg,
-);
-
-typedef _c_sqlite3_stmt_status = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  ffi.Int32 op,
-  ffi.Int32 resetFlg,
-);
-
-typedef _dart_sqlite3_stmt_status = int Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-  int op,
-  int resetFlg,
-);
-
-typedef _c_sqlite3_backup_init = ffi.Pointer<sqlite3_backup> Function(
-  ffi.Pointer<sqlite3> pDest,
-  ffi.Pointer<ffi.Int8> zDestName,
-  ffi.Pointer<sqlite3> pSource,
-  ffi.Pointer<ffi.Int8> zSourceName,
-);
-
-typedef _dart_sqlite3_backup_init = ffi.Pointer<sqlite3_backup> Function(
-  ffi.Pointer<sqlite3> pDest,
-  ffi.Pointer<ffi.Int8> zDestName,
-  ffi.Pointer<sqlite3> pSource,
-  ffi.Pointer<ffi.Int8> zSourceName,
-);
-
-typedef _c_sqlite3_backup_step = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_backup> p,
-  ffi.Int32 nPage,
-);
-
-typedef _dart_sqlite3_backup_step = int Function(
-  ffi.Pointer<sqlite3_backup> p,
-  int nPage,
-);
-
-typedef _c_sqlite3_backup_finish = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_backup> p,
-);
-
-typedef _dart_sqlite3_backup_finish = int Function(
-  ffi.Pointer<sqlite3_backup> p,
-);
-
-typedef _c_sqlite3_backup_remaining = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_backup> p,
-);
-
-typedef _dart_sqlite3_backup_remaining = int Function(
-  ffi.Pointer<sqlite3_backup> p,
-);
-
-typedef _c_sqlite3_backup_pagecount = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_backup> p,
-);
-
-typedef _dart_sqlite3_backup_pagecount = int Function(
-  ffi.Pointer<sqlite3_backup> p,
-);
-
-typedef _typedefC_147 = ffi.Void Function(
-  ffi.Pointer<ffi.Pointer<ffi.Void>>,
-  ffi.Int32,
-);
-
-typedef _c_sqlite3_unlock_notify = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> pBlocked,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_147>> xNotify,
-  ffi.Pointer<ffi.Void> pNotifyArg,
-);
-
-typedef _dart_sqlite3_unlock_notify = int Function(
-  ffi.Pointer<sqlite3> pBlocked,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_147>> xNotify,
-  ffi.Pointer<ffi.Void> pNotifyArg,
-);
-
-typedef _c_sqlite3_stricmp = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-);
-
-typedef _dart_sqlite3_stricmp = int Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-);
-
-typedef _c_sqlite3_strnicmp = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  ffi.Int32 arg2,
-);
-
-typedef _dart_sqlite3_strnicmp = int Function(
-  ffi.Pointer<ffi.Int8> arg0,
-  ffi.Pointer<ffi.Int8> arg1,
-  int arg2,
-);
-
-typedef _c_sqlite3_strglob = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> zGlob,
-  ffi.Pointer<ffi.Int8> zStr,
-);
-
-typedef _dart_sqlite3_strglob = int Function(
-  ffi.Pointer<ffi.Int8> zGlob,
-  ffi.Pointer<ffi.Int8> zStr,
-);
-
-typedef _c_sqlite3_strlike = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8> zGlob,
-  ffi.Pointer<ffi.Int8> zStr,
-  ffi.Uint32 cEsc,
-);
-
-typedef _dart_sqlite3_strlike = int Function(
-  ffi.Pointer<ffi.Int8> zGlob,
-  ffi.Pointer<ffi.Int8> zStr,
-  int cEsc,
-);
-
-typedef _c_sqlite3_log = ffi.Void Function(
-  ffi.Int32 iErrCode,
-  ffi.Pointer<ffi.Int8> zFormat,
-);
-
-typedef _dart_sqlite3_log = void Function(
-  int iErrCode,
-  ffi.Pointer<ffi.Int8> zFormat,
-);
-
-typedef _typedefC_148 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<sqlite3>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-);
-
-typedef _c_sqlite3_wal_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_148>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _dart_sqlite3_wal_hook = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_148>> arg1,
-  ffi.Pointer<ffi.Void> arg2,
-);
-
-typedef _c_sqlite3_wal_autocheckpoint = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Int32 N,
-);
-
-typedef _dart_sqlite3_wal_autocheckpoint = int Function(
-  ffi.Pointer<sqlite3> db,
-  int N,
-);
-
-typedef _c_sqlite3_wal_checkpoint = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDb,
-);
-
-typedef _dart_sqlite3_wal_checkpoint = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDb,
-);
-
-typedef _c_sqlite3_wal_checkpoint_v2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDb,
-  ffi.Int32 eMode,
-  ffi.Pointer<ffi.Int32> pnLog,
-  ffi.Pointer<ffi.Int32> pnCkpt,
-);
-
-typedef _dart_sqlite3_wal_checkpoint_v2 = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDb,
-  int eMode,
-  ffi.Pointer<ffi.Int32> pnLog,
-  ffi.Pointer<ffi.Int32> pnCkpt,
-);
-
-typedef _c_sqlite3_vtab_config = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-  ffi.Int32 op,
-);
-
-typedef _dart_sqlite3_vtab_config = int Function(
-  ffi.Pointer<sqlite3> arg0,
-  int op,
-);
-
-typedef _c_sqlite3_vtab_on_conflict = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_vtab_on_conflict = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_vtab_nochange = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _dart_sqlite3_vtab_nochange = int Function(
-  ffi.Pointer<sqlite3_context> arg0,
-);
-
-typedef _c_sqlite3_vtab_collation = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_index_info> arg0,
-  ffi.Int32 arg1,
-);
-
-typedef _dart_sqlite3_vtab_collation = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_index_info> arg0,
-  int arg1,
-);
-
-typedef _c_sqlite3_stmt_scanstatus = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-  ffi.Int32 idx,
-  ffi.Int32 iScanStatusOp,
-  ffi.Pointer<ffi.Void> pOut,
-);
-
-typedef _dart_sqlite3_stmt_scanstatus = int Function(
-  ffi.Pointer<sqlite3_stmt> pStmt,
-  int idx,
-  int iScanStatusOp,
-  ffi.Pointer<ffi.Void> pOut,
-);
-
-typedef _c_sqlite3_stmt_scanstatus_reset = ffi.Void Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _dart_sqlite3_stmt_scanstatus_reset = void Function(
-  ffi.Pointer<sqlite3_stmt> arg0,
-);
-
-typedef _c_sqlite3_db_cacheflush = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_db_cacheflush = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_system_errno = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _dart_sqlite3_system_errno = int Function(
-  ffi.Pointer<sqlite3> arg0,
-);
-
-typedef _c_sqlite3_snapshot_get = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<ffi.Pointer<sqlite3_snapshot>> ppSnapshot,
-);
-
-typedef _dart_sqlite3_snapshot_get = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<ffi.Pointer<sqlite3_snapshot>> ppSnapshot,
-);
-
-typedef _c_sqlite3_snapshot_open = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<sqlite3_snapshot> pSnapshot,
-);
-
-typedef _dart_sqlite3_snapshot_open = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<sqlite3_snapshot> pSnapshot,
-);
-
-typedef _c_sqlite3_snapshot_free = ffi.Void Function(
-  ffi.Pointer<sqlite3_snapshot> arg0,
-);
-
-typedef _dart_sqlite3_snapshot_free = void Function(
-  ffi.Pointer<sqlite3_snapshot> arg0,
-);
-
-typedef _c_sqlite3_snapshot_cmp = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_snapshot> p1,
-  ffi.Pointer<sqlite3_snapshot> p2,
-);
-
-typedef _dart_sqlite3_snapshot_cmp = int Function(
-  ffi.Pointer<sqlite3_snapshot> p1,
-  ffi.Pointer<sqlite3_snapshot> p2,
-);
-
-typedef _c_sqlite3_snapshot_recover = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDb,
-);
-
-typedef _dart_sqlite3_snapshot_recover = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zDb,
-);
-
-typedef _c_sqlite3_serialize = ffi.Pointer<ffi.Uint8> Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<ffi.Int64> piSize,
-  ffi.Uint32 mFlags,
-);
-
-typedef _dart_sqlite3_serialize = ffi.Pointer<ffi.Uint8> Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<ffi.Int64> piSize,
-  int mFlags,
-);
-
-typedef _c_sqlite3_deserialize = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<ffi.Uint8> pData,
-  ffi.Int64 szDb,
-  ffi.Int64 szBuf,
-  ffi.Uint32 mFlags,
-);
-
-typedef _dart_sqlite3_deserialize = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zSchema,
-  ffi.Pointer<ffi.Uint8> pData,
-  int szDb,
-  int szBuf,
-  int mFlags,
-);
-
-typedef _typedefC_151 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_rtree_geometry>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Double>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _c_sqlite3_rtree_geometry_callback = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zGeom,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_151>> xGeom,
-  ffi.Pointer<ffi.Void> pContext,
-);
-
-typedef _dart_sqlite3_rtree_geometry_callback = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zGeom,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_151>> xGeom,
-  ffi.Pointer<ffi.Void> pContext,
-);
-
-typedef _typedefC_152 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_rtree_query_info>,
-);
-
-typedef _typedefC_153 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _c_sqlite3_rtree_query_callback = ffi.Int32 Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zQueryFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_152>> xQueryFunc,
-  ffi.Pointer<ffi.Void> pContext,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_153>> xDestructor,
-);
-
-typedef _dart_sqlite3_rtree_query_callback = int Function(
-  ffi.Pointer<sqlite3> db,
-  ffi.Pointer<ffi.Int8> zQueryFunc,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_152>> xQueryFunc,
-  ffi.Pointer<ffi.Void> pContext,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_153>> xDestructor,
-);
-
-typedef _typedefC_2 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-);
-
-typedef _typedefC_3 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Int64,
-);
-
-typedef _typedefC_4 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Int64,
-);
-
-typedef _typedefC_5 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int64,
-);
-
-typedef _typedefC_6 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-);
-
-typedef _typedefC_7 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Pointer<ffi.Int64>,
-);
-
-typedef _typedefC_8 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-);
-
-typedef _typedefC_9 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-);
-
-typedef _typedefC_10 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_11 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_12 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-);
-
-typedef _typedefC_13 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-);
-
-typedef _typedefC_14 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-  ffi.Int32,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<ffi.Void>>,
-);
-
-typedef _typedefC_15 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-  ffi.Int32,
-  ffi.Int32,
-);
-
-typedef _typedefC_16 = ffi.Void Function(
-  ffi.Pointer<sqlite3_file>,
-);
-
-typedef _typedefC_17 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-);
-
-typedef _typedefC_18 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int64,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<ffi.Void>>,
-);
-
-typedef _typedefC_19 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int64,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_20 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<sqlite3_file>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_21 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-);
-
-typedef _typedefC_22 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_23 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_24 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_25 = ffi.Void Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_27 = ffi.Void Function();
-
-typedef _typedefC_26 = ffi.Pointer<ffi.NativeFunction<_typedefC_27>> Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_28 = ffi.Void Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_29 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_30 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Int32,
-);
-
-typedef _typedefC_31 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Double>,
-);
-
-typedef _typedefC_32 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_33 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int64>,
-);
-
-typedef sqlite3_syscall_ptr = ffi.Void Function();
-
-typedef _typedefC_34 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.NativeFunction<sqlite3_syscall_ptr>>,
-);
-
-typedef _typedefC_35 = ffi.Pointer<ffi.NativeFunction<sqlite3_syscall_ptr>>
-    Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_36 = ffi.Pointer<ffi.Int8> Function(
-  ffi.Pointer<sqlite3_vfs>,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_37 = ffi.Pointer<ffi.Void> Function(
-  ffi.Int32,
-);
-
-typedef _typedefC_38 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_39 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-);
-
-typedef _typedefC_40 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_41 = ffi.Int32 Function(
-  ffi.Int32,
-);
-
-typedef _typedefC_42 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_43 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_92 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-  ffi.Pointer<ffi.Pointer<sqlite3_vtab>>,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-);
-
-typedef _typedefC_93 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-  ffi.Pointer<ffi.Pointer<sqlite3_vtab>>,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-);
-
-typedef _typedefC_94 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Pointer<sqlite3_index_info>,
-);
-
-typedef _typedefC_95 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-);
-
-typedef _typedefC_96 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-);
-
-typedef _typedefC_97 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Pointer<ffi.Pointer<sqlite3_vtab_cursor>>,
-);
-
-typedef _typedefC_98 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab_cursor>,
-);
-
-typedef _typedefC_99 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab_cursor>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_100 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab_cursor>,
-);
-
-typedef _typedefC_101 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab_cursor>,
-);
-
-typedef _typedefC_102 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab_cursor>,
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-);
-
-typedef _typedefC_103 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab_cursor>,
-  ffi.Pointer<ffi.Int64>,
-);
-
-typedef _typedefC_104 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-  ffi.Pointer<ffi.Int64>,
-);
-
-typedef _typedefC_105 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-);
-
-typedef _typedefC_106 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-);
-
-typedef _typedefC_107 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-);
-
-typedef _typedefC_108 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-);
-
-typedef _typedefC_109 = ffi.Void Function(
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_110 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Pointer<ffi.NativeFunction<_typedefC_109>>>,
-  ffi.Pointer<ffi.Pointer<ffi.Void>>,
-);
-
-typedef _typedefC_111 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_112 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Int32,
-);
-
-typedef _typedefC_113 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Int32,
-);
-
-typedef _typedefC_114 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_vtab>,
-  ffi.Int32,
-);
-
-typedef _typedefC_115 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Int8>,
-);
-
-typedef _typedefC_117 = ffi.Int32 Function();
-
-typedef _typedefC_118 = ffi.Int32 Function();
-
-typedef _typedefC_119 = ffi.Pointer<sqlite3_mutex> Function(
-  ffi.Int32,
-);
-
-typedef _typedefC_120 = ffi.Void Function(
-  ffi.Pointer<sqlite3_mutex>,
-);
-
-typedef _typedefC_121 = ffi.Void Function(
-  ffi.Pointer<sqlite3_mutex>,
-);
-
-typedef _typedefC_122 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_mutex>,
-);
-
-typedef _typedefC_123 = ffi.Void Function(
-  ffi.Pointer<sqlite3_mutex>,
-);
-
-typedef _typedefC_124 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_mutex>,
-);
-
-typedef _typedefC_125 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_mutex>,
-);
-
-typedef _typedefC_126 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_127 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_128 = ffi.Pointer<sqlite3_pcache> Function(
-  ffi.Int32,
-  ffi.Int32,
-  ffi.Int32,
-);
-
-typedef _typedefC_129 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Int32,
-);
-
-typedef _typedefC_130 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_pcache>,
-);
-
-typedef _typedefC_131 = ffi.Pointer<sqlite3_pcache_page> Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Uint32,
-  ffi.Int32,
-);
-
-typedef _typedefC_132 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Pointer<sqlite3_pcache_page>,
-  ffi.Int32,
-);
-
-typedef _typedefC_133 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Pointer<sqlite3_pcache_page>,
-  ffi.Uint32,
-  ffi.Uint32,
-);
-
-typedef _typedefC_134 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Uint32,
-);
-
-typedef _typedefC_135 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-);
-
-typedef _typedefC_136 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-);
-
-typedef _typedefC_137 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_138 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_139 = ffi.Pointer<sqlite3_pcache> Function(
-  ffi.Int32,
-  ffi.Int32,
-);
-
-typedef _typedefC_140 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Int32,
-);
-
-typedef _typedefC_141 = ffi.Int32 Function(
-  ffi.Pointer<sqlite3_pcache>,
-);
-
-typedef _typedefC_142 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Uint32,
-  ffi.Int32,
-);
-
-typedef _typedefC_143 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-);
-
-typedef _typedefC_144 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Uint32,
-  ffi.Uint32,
-);
-
-typedef _typedefC_145 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-  ffi.Uint32,
-);
-
-typedef _typedefC_146 = ffi.Void Function(
-  ffi.Pointer<sqlite3_pcache>,
-);
-
-typedef _typedefC_149 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_150 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_154 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<Fts5Context>,
-);
-
-typedef _typedefC_155 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-);
-
-typedef _typedefC_156 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<ffi.Int64>,
-);
-
-typedef _typedefC_157 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int64>,
-);
-
-typedef _typedefC_158 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-  ffi.Int32,
-  ffi.Int32,
-);
-
-typedef _typedefC_159 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_158>>,
-);
-
-typedef _typedefC_160 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-);
-
-typedef _typedefC_161 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-);
-
-typedef _typedefC_162 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_163 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int32>,
-  ffi.Pointer<ffi.Int32>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_164 = ffi.Int64 Function(
-  ffi.Pointer<Fts5Context>,
-);
-
-typedef _typedefC_165 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_166 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_167 = ffi.Int32 Function(
-  ffi.Pointer<Fts5ExtensionApi>,
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_168 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_167>>,
-);
-
-typedef _typedefC_169 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_170 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_169>>,
-);
-
-typedef _typedefC_171 = ffi.Pointer<ffi.Void> Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-);
-
-typedef _typedefC_172 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-  ffi.Pointer<Fts5PhraseIter>,
-  ffi.Pointer<ffi.Int32>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_173 = ffi.Void Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<Fts5PhraseIter>,
-  ffi.Pointer<ffi.Int32>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_174 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Int32,
-  ffi.Pointer<Fts5PhraseIter>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_175 = ffi.Void Function(
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<Fts5PhraseIter>,
-  ffi.Pointer<ffi.Int32>,
-);
-
-typedef _typedefC_176 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.Pointer<ffi.Int8>>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<Fts5Tokenizer>>,
-);
-
-typedef _typedefC_177 = ffi.Void Function(
-  ffi.Pointer<Fts5Tokenizer>,
-);
-
-typedef _typedefC_178 = ffi.Int32 Function(
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-  ffi.Int32,
-  ffi.Int32,
-);
-
-typedef _typedefC_179 = ffi.Int32 Function(
-  ffi.Pointer<Fts5Tokenizer>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Int32,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_178>>,
-);
-
-typedef _typedefC_180 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_181 = ffi.Int32 Function(
-  ffi.Pointer<fts5_api>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<fts5_tokenizer>,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_180>>,
-);
-
-typedef _typedefC_182 = ffi.Int32 Function(
-  ffi.Pointer<fts5_api>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Pointer<ffi.Void>>,
-  ffi.Pointer<fts5_tokenizer>,
-);
-
-typedef fts5_extension_function = ffi.Void Function(
-  ffi.Pointer<Fts5ExtensionApi>,
-  ffi.Pointer<Fts5Context>,
-  ffi.Pointer<sqlite3_context>,
-  ffi.Int32,
-  ffi.Pointer<ffi.Pointer<sqlite3_value>>,
-);
-
-typedef _typedefC_183 = ffi.Void Function(
-  ffi.Pointer<ffi.Void>,
-);
-
-typedef _typedefC_184 = ffi.Int32 Function(
-  ffi.Pointer<fts5_api>,
-  ffi.Pointer<ffi.Int8>,
-  ffi.Pointer<ffi.Void>,
-  ffi.Pointer<ffi.NativeFunction<fts5_extension_function>>,
-  ffi.Pointer<ffi.NativeFunction<_typedefC_183>>,
-);
diff --git a/test/large_integration_tests/large_test.dart b/test/large_integration_tests/large_test.dart
index b7cf797..35bb635 100644
--- a/test/large_integration_tests/large_test.dart
+++ b/test/large_integration_tests/large_test.dart
@@ -37,6 +37,9 @@
     - '**Documentation.h'
     - '**FataErrorHandler.h'
     - '**Index.h'
+${strings.typedefmap}:
+  'size_t': 'IntPtr'
+  'time_t': 'Int64'
       ''') as YamlMap);
       final library = parse(config);
 
@@ -59,6 +62,8 @@
     - third_party/cjson_library/cJSON.h
   ${strings.includeDirectives}:
     - '**cJSON.h'
+${strings.typedefmap}:
+  'size_t': 'IntPtr'
       ''') as YamlMap);
       final library = parse(config);
 
diff --git a/test/native_test/native_test_bindings.dart b/test/native_test/native_test_bindings.dart
index 620771c..ef7ee45 100644
--- a/test/native_test/native_test_bindings.dart
+++ b/test/native_test/native_test_bindings.dart
@@ -29,9 +29,10 @@
   }
 
   late final _Function1Bool_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Bool>>('Function1Bool');
-  late final _dart_Function1Bool _Function1Bool =
-      _Function1Bool_ptr.asFunction<_dart_Function1Bool>();
+      _lookup<ffi.NativeFunction<ffi.Uint8 Function(ffi.Uint8)>>(
+          'Function1Bool');
+  late final _Function1Bool =
+      _Function1Bool_ptr.asFunction<int Function(int)>();
 
   int Function1Uint8(
     int x,
@@ -42,9 +43,10 @@
   }
 
   late final _Function1Uint8_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Uint8>>('Function1Uint8');
-  late final _dart_Function1Uint8 _Function1Uint8 =
-      _Function1Uint8_ptr.asFunction<_dart_Function1Uint8>();
+      _lookup<ffi.NativeFunction<ffi.Uint8 Function(ffi.Uint8)>>(
+          'Function1Uint8');
+  late final _Function1Uint8 =
+      _Function1Uint8_ptr.asFunction<int Function(int)>();
 
   int Function1Uint16(
     int x,
@@ -55,9 +57,10 @@
   }
 
   late final _Function1Uint16_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Uint16>>('Function1Uint16');
-  late final _dart_Function1Uint16 _Function1Uint16 =
-      _Function1Uint16_ptr.asFunction<_dart_Function1Uint16>();
+      _lookup<ffi.NativeFunction<ffi.Uint16 Function(ffi.Uint16)>>(
+          'Function1Uint16');
+  late final _Function1Uint16 =
+      _Function1Uint16_ptr.asFunction<int Function(int)>();
 
   int Function1Uint32(
     int x,
@@ -68,9 +71,10 @@
   }
 
   late final _Function1Uint32_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Uint32>>('Function1Uint32');
-  late final _dart_Function1Uint32 _Function1Uint32 =
-      _Function1Uint32_ptr.asFunction<_dart_Function1Uint32>();
+      _lookup<ffi.NativeFunction<ffi.Uint32 Function(ffi.Uint32)>>(
+          'Function1Uint32');
+  late final _Function1Uint32 =
+      _Function1Uint32_ptr.asFunction<int Function(int)>();
 
   int Function1Uint64(
     int x,
@@ -81,9 +85,10 @@
   }
 
   late final _Function1Uint64_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Uint64>>('Function1Uint64');
-  late final _dart_Function1Uint64 _Function1Uint64 =
-      _Function1Uint64_ptr.asFunction<_dart_Function1Uint64>();
+      _lookup<ffi.NativeFunction<ffi.Uint64 Function(ffi.Uint64)>>(
+          'Function1Uint64');
+  late final _Function1Uint64 =
+      _Function1Uint64_ptr.asFunction<int Function(int)>();
 
   int Function1Int8(
     int x,
@@ -94,9 +99,9 @@
   }
 
   late final _Function1Int8_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Int8>>('Function1Int8');
-  late final _dart_Function1Int8 _Function1Int8 =
-      _Function1Int8_ptr.asFunction<_dart_Function1Int8>();
+      _lookup<ffi.NativeFunction<ffi.Int8 Function(ffi.Int8)>>('Function1Int8');
+  late final _Function1Int8 =
+      _Function1Int8_ptr.asFunction<int Function(int)>();
 
   int Function1Int16(
     int x,
@@ -107,9 +112,10 @@
   }
 
   late final _Function1Int16_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Int16>>('Function1Int16');
-  late final _dart_Function1Int16 _Function1Int16 =
-      _Function1Int16_ptr.asFunction<_dart_Function1Int16>();
+      _lookup<ffi.NativeFunction<ffi.Int16 Function(ffi.Int16)>>(
+          'Function1Int16');
+  late final _Function1Int16 =
+      _Function1Int16_ptr.asFunction<int Function(int)>();
 
   int Function1Int32(
     int x,
@@ -120,9 +126,10 @@
   }
 
   late final _Function1Int32_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Int32>>('Function1Int32');
-  late final _dart_Function1Int32 _Function1Int32 =
-      _Function1Int32_ptr.asFunction<_dart_Function1Int32>();
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(ffi.Int32)>>(
+          'Function1Int32');
+  late final _Function1Int32 =
+      _Function1Int32_ptr.asFunction<int Function(int)>();
 
   int Function1Int64(
     int x,
@@ -133,9 +140,10 @@
   }
 
   late final _Function1Int64_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Int64>>('Function1Int64');
-  late final _dart_Function1Int64 _Function1Int64 =
-      _Function1Int64_ptr.asFunction<_dart_Function1Int64>();
+      _lookup<ffi.NativeFunction<ffi.Int64 Function(ffi.Int64)>>(
+          'Function1Int64');
+  late final _Function1Int64 =
+      _Function1Int64_ptr.asFunction<int Function(int)>();
 
   int Function1IntPtr(
     int x,
@@ -146,9 +154,10 @@
   }
 
   late final _Function1IntPtr_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1IntPtr>>('Function1IntPtr');
-  late final _dart_Function1IntPtr _Function1IntPtr =
-      _Function1IntPtr_ptr.asFunction<_dart_Function1IntPtr>();
+      _lookup<ffi.NativeFunction<ffi.IntPtr Function(ffi.IntPtr)>>(
+          'Function1IntPtr');
+  late final _Function1IntPtr =
+      _Function1IntPtr_ptr.asFunction<int Function(int)>();
 
   double Function1Float(
     double x,
@@ -159,9 +168,10 @@
   }
 
   late final _Function1Float_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Float>>('Function1Float');
-  late final _dart_Function1Float _Function1Float =
-      _Function1Float_ptr.asFunction<_dart_Function1Float>();
+      _lookup<ffi.NativeFunction<ffi.Float Function(ffi.Float)>>(
+          'Function1Float');
+  late final _Function1Float =
+      _Function1Float_ptr.asFunction<double Function(double)>();
 
   double Function1Double(
     double x,
@@ -172,18 +182,20 @@
   }
 
   late final _Function1Double_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1Double>>('Function1Double');
-  late final _dart_Function1Double _Function1Double =
-      _Function1Double_ptr.asFunction<_dart_Function1Double>();
+      _lookup<ffi.NativeFunction<ffi.Double Function(ffi.Double)>>(
+          'Function1Double');
+  late final _Function1Double =
+      _Function1Double_ptr.asFunction<double Function(double)>();
 
   ffi.Pointer<Struct1> getStruct1() {
     return _getStruct1();
   }
 
   late final _getStruct1_ptr =
-      _lookup<ffi.NativeFunction<_c_getStruct1>>('getStruct1');
-  late final _dart_getStruct1 _getStruct1 =
-      _getStruct1_ptr.asFunction<_dart_getStruct1>();
+      _lookup<ffi.NativeFunction<ffi.Pointer<Struct1> Function()>>(
+          'getStruct1');
+  late final _getStruct1 =
+      _getStruct1_ptr.asFunction<ffi.Pointer<Struct1> Function()>();
 
   Struct3 Function1StructReturnByValue(
     int a,
@@ -197,12 +209,12 @@
     );
   }
 
-  late final _Function1StructReturnByValue_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1StructReturnByValue>>(
-          'Function1StructReturnByValue');
-  late final _dart_Function1StructReturnByValue _Function1StructReturnByValue =
-      _Function1StructReturnByValue_ptr.asFunction<
-          _dart_Function1StructReturnByValue>();
+  late final _Function1StructReturnByValue_ptr = _lookup<
+      ffi.NativeFunction<
+          Struct3 Function(ffi.Int32, ffi.Int32,
+              ffi.Int32)>>('Function1StructReturnByValue');
+  late final _Function1StructReturnByValue = _Function1StructReturnByValue_ptr
+      .asFunction<Struct3 Function(int, int, int)>();
 
   int Function1StructPassByValue(
     Struct3 sum_a_b_c,
@@ -213,11 +225,10 @@
   }
 
   late final _Function1StructPassByValue_ptr =
-      _lookup<ffi.NativeFunction<_c_Function1StructPassByValue>>(
+      _lookup<ffi.NativeFunction<ffi.Int32 Function(Struct3)>>(
           'Function1StructPassByValue');
-  late final _dart_Function1StructPassByValue _Function1StructPassByValue =
-      _Function1StructPassByValue_ptr.asFunction<
-          _dart_Function1StructPassByValue>();
+  late final _Function1StructPassByValue =
+      _Function1StructPassByValue_ptr.asFunction<int Function(Struct3)>();
 }
 
 class Struct1 extends ffi.Struct {
@@ -238,123 +249,3 @@
   @ffi.Int32()
   external int c;
 }
-
-typedef _c_Function1Bool = ffi.Uint8 Function(
-  ffi.Uint8 x,
-);
-
-typedef _dart_Function1Bool = int Function(
-  int x,
-);
-
-typedef _c_Function1Uint8 = ffi.Uint8 Function(
-  ffi.Uint8 x,
-);
-
-typedef _dart_Function1Uint8 = int Function(
-  int x,
-);
-
-typedef _c_Function1Uint16 = ffi.Uint16 Function(
-  ffi.Uint16 x,
-);
-
-typedef _dart_Function1Uint16 = int Function(
-  int x,
-);
-
-typedef _c_Function1Uint32 = ffi.Uint32 Function(
-  ffi.Uint32 x,
-);
-
-typedef _dart_Function1Uint32 = int Function(
-  int x,
-);
-
-typedef _c_Function1Uint64 = ffi.Uint64 Function(
-  ffi.Uint64 x,
-);
-
-typedef _dart_Function1Uint64 = int Function(
-  int x,
-);
-
-typedef _c_Function1Int8 = ffi.Int8 Function(
-  ffi.Int8 x,
-);
-
-typedef _dart_Function1Int8 = int Function(
-  int x,
-);
-
-typedef _c_Function1Int16 = ffi.Int16 Function(
-  ffi.Int16 x,
-);
-
-typedef _dart_Function1Int16 = int Function(
-  int x,
-);
-
-typedef _c_Function1Int32 = ffi.Int32 Function(
-  ffi.Int32 x,
-);
-
-typedef _dart_Function1Int32 = int Function(
-  int x,
-);
-
-typedef _c_Function1Int64 = ffi.Int64 Function(
-  ffi.Int64 x,
-);
-
-typedef _dart_Function1Int64 = int Function(
-  int x,
-);
-
-typedef _c_Function1IntPtr = ffi.IntPtr Function(
-  ffi.IntPtr x,
-);
-
-typedef _dart_Function1IntPtr = int Function(
-  int x,
-);
-
-typedef _c_Function1Float = ffi.Float Function(
-  ffi.Float x,
-);
-
-typedef _dart_Function1Float = double Function(
-  double x,
-);
-
-typedef _c_Function1Double = ffi.Double Function(
-  ffi.Double x,
-);
-
-typedef _dart_Function1Double = double Function(
-  double x,
-);
-
-typedef _c_getStruct1 = ffi.Pointer<Struct1> Function();
-
-typedef _dart_getStruct1 = ffi.Pointer<Struct1> Function();
-
-typedef _c_Function1StructReturnByValue = Struct3 Function(
-  ffi.Int32 a,
-  ffi.Int32 b,
-  ffi.Int32 c,
-);
-
-typedef _dart_Function1StructReturnByValue = Struct3 Function(
-  int a,
-  int b,
-  int c,
-);
-
-typedef _c_Function1StructPassByValue = ffi.Int32 Function(
-  Struct3 sum_a_b_c,
-);
-
-typedef _dart_Function1StructPassByValue = int Function(
-  Struct3 sum_a_b_c,
-);
diff --git a/test/rename_tests/rename.h b/test/rename_tests/rename.h
index 8ff6d88..71ec5bc 100644
--- a/test/rename_tests/rename.h
+++ b/test/rename_tests/rename.h
@@ -26,10 +26,15 @@
     int _underscore;
 };
 
+typedef struct Struct5{
+    int a;
+} Struct5_Alias;
+
 void func1(struct Struct1 *s);
 void test_func2(struct Test_Struct2 *s);
 void fullMatch_func3(struct FullMatchStruct3 *s);
 void memberRename_func4(int _underscore, float fullMatch, int);
+void typedefRenameFunc(Struct5_Alias s);
 
 enum Enum1
 {
diff --git a/test/rename_tests/rename_test.dart b/test/rename_tests/rename_test.dart
index bb4f0ee..f362a11 100644
--- a/test/rename_tests/rename_test.dart
+++ b/test/rename_tests/rename_test.dart
@@ -31,7 +31,7 @@
   ${strings.entryPoints}:
     - 'test/rename_tests/rename.h'
 
-functions:
+${strings.functions}:
   ${strings.rename}:
     'test_(.*)': '\$1'
     '.*': '$functionPrefix\$0'
@@ -42,7 +42,7 @@
       'fullMatch': 'fullMatchSuccess'
       '': 'unnamed'
 
-structs:
+${strings.structs}:
   ${strings.rename}:
     'Test_(.*)': '\$1'
     '.*': '$structPrefix\$0'
@@ -54,7 +54,7 @@
     '.*':
       '_(.*)': '\$1'
 
-enums:
+${strings.enums}:
   ${strings.rename}:
     'Test_(.*)': '\$1'
     '.*': '$enumPrefix\$0'
@@ -64,17 +64,20 @@
       '_(.*)': '\$1'
       'fullMatch': 'fullMatchSuccess'
 
-unnamed-enums:
+${strings.unnamedEnums}:
   ${strings.rename}:
     '_(.*)': '\$1'
     'unnamedFullMatch': 'unnamedFullMatchSuccess'
 
-macros:
+${strings.macros}:
   ${strings.rename}:
     'Test_(.*)': '\$1'
     '.*': '$macroPrefix\$0'
     'FullMatchMacro3': 'Macro3'
 
+${strings.typedefs}:
+  ${strings.rename}:
+    'Struct5_Alias': 'Struct5_Alias_Renamed'
     ''') as yaml.YamlMap));
     });
 
@@ -150,6 +153,10 @@
       expect(actual.getBindingAsString('unnamedFullMatchSuccess'),
           expected.getBindingAsString('unnamedFullMatchSuccess'));
     });
+    test('typedef rename', () {
+      expect(actual.getBindingAsString('Struct5_Alias_Renamed'),
+          expected.getBindingAsString('Struct5_Alias_Renamed'));
+    });
   });
 }
 
@@ -220,6 +227,21 @@
           ),
         ],
       ),
+      Func(
+        name: '${functionPrefix}typedefRenameFunc',
+        originalName: 'typedefRenameFunc',
+        returnType: Type.nativeType(
+          SupportedNativeType.Void,
+        ),
+        parameters: [
+          Parameter(
+            name: 's',
+            type: Type.typealias(Typealias(
+                name: 'Struct5_Alias_Renamed',
+                type: Type.struct(Struc(name: '${structPrefix}Struct5')))),
+          ),
+        ],
+      ),
       struc1,
       struc2,
       struc3,