)]}'
{
  "commit": "4f770adeb33edf1d2692c3ab6f6e68136f965eed",
  "tree": "e067214a467501128b3aa584c688e910360e0669",
  "parents": [
    "466ed3f7b8b50e30c8cdc70a0725270e2623f8ea"
  ],
  "author": {
    "name": "Hossein Yousefi",
    "email": "yousefi@google.com",
    "time": "Thu Feb 16 10:23:33 2023 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Feb 16 10:23:33 2023 +0100"
  },
  "message": "[jnigen] Convert Kotlin\u0027s `suspend fun` to Dart\u0027s async methods (https://github.com/dart-lang/jnigen/issues/171)\n\nAdded a boolean option to jnigen.yaml called `suspend_fun_to_async`. When `true`, Kotlin suspendable functions, specified by `suspend fun`, will be converted into Dart async methods. \r\n\r\nA Kotlin suspendable function gets de-sugared into a continutation-passing style (CPS) method which takes a `kotlin.coroutines.Continuation` as its final argument. \r\n\r\nAt the preprocessing stage – if the `suspend_fun_to_async` option is set – the `asyncReturnType` of each method that has `kotlin.coroutines.Continuation` as its final argument will be set so that later in the binding generation step, the return type of the method gets converted to `Future\u003c{asyncReturnType}\u003e`.\r\n\r\nThe generated bindings instead passes a special `PortContinuation` instance which is defined by `package:jni`. This class implements `Continuation` and gets a native send port address in its constructor. Later, when the `suspend fun` wants to resume, the `resumeWith` method of the `PortContinuation` instance gets called, which in turn calls the `_resumeWith` native method defined in `dartjni.c`. This method send the address of the object to through the send port specified.\r\n\r\nAll the boilerplate regarding the creation of `NativePort`, `PortContinuation`, awaiting responses, checking for errors and such are automatically generated by `package:jnigen`.\r\n\r\nFor native ports to work, `package:jni` provides a handy `Jni.initDLApi()` to be called first.\r\n\r\nExample:\r\n\r\nThis:\r\n\r\n```kotlin\r\npublic suspend fun thinkBeforeAnswering(): String\r\n```\r\n\r\nGets converted to:\r\n\r\n```dart\r\nFuture\u003cjni.JString\u003e thinkBeforeAnswering() async\r\n```",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "13b25f638f7f8d9a676b277d3447ae4861c2c64a",
      "old_mode": 33188,
      "old_path": "pkgs/jni/android/build.gradle",
      "new_id": "8900d0c9cefa31295bd5db539bd4452b4c87b07c",
      "new_mode": 33188,
      "new_path": "pkgs/jni/android/build.gradle"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eb377e4a74e636354ec912c059081c3a906d0730",
      "new_mode": 33188,
      "new_path": "pkgs/jni/android/src/main/java/com/github/dart_lang/jni/PortContinuation.java"
    },
    {
      "type": "delete",
      "old_id": "03efa2c17cc7a56f18fdb88523338face28919df",
      "old_mode": 33188,
      "old_path": "pkgs/jni/example/pubspec.lock",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "8286855837f2572c395fc716527abea9d6e227c4",
      "old_mode": 33188,
      "old_path": "pkgs/jni/ffigen.yaml",
      "new_id": "dc1cea2dc97dd1dc8cef660730f59a44575a29e3",
      "new_mode": 33188,
      "new_path": "pkgs/jni/ffigen.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9f970225adb6a6ada5c22d46d02684b6b0f5525e",
      "new_mode": 33188,
      "new_path": "pkgs/jni/java/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18a6cd38c2bc189bf74a60fb6397c721fb14f2cc",
      "new_mode": 33188,
      "new_path": "pkgs/jni/java/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "62f121e3d2f06c8fa3ba1cc791fa3e0df68178c1",
      "new_mode": 33188,
      "new_path": "pkgs/jni/java/pom.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2900ab128295f31dec6e96c88579ff837134ca64",
      "new_mode": 33188,
      "new_path": "pkgs/jni/java/src/main/java/com/github/dart_lang/jni/PortContinuation.java"
    },
    {
      "type": "modify",
      "old_id": "e24f8ac8ef33b2699ff2278e3edc8269d78ab28a",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/jarray.dart",
      "new_id": "d1e8ac40acc8931528d9b66e644dffe38d0b2eca",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/jarray.dart"
    },
    {
      "type": "modify",
      "old_id": "7d32996838a789f43ccb9115dca7158db0a456c7",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/jni.dart",
      "new_id": "b165f8ea240b55a64a3947c59c818368b615f54a",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/jni.dart"
    },
    {
      "type": "modify",
      "old_id": "45ce03e027bf41a6d7250498d9e98377636b084f",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/third_party/jni_bindings_generated.dart",
      "new_id": "3ca9198fd6223b087aad591c2386813fc94b83aa",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/third_party/jni_bindings_generated.dart"
    },
    {
      "type": "modify",
      "old_id": "b1f4a771d2d2e63d6e9f4067d3e9e9a97f426b13",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/types.dart",
      "new_id": "07102e894f21b3c1387cf0d90f29f173a569d209",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/types.dart"
    },
    {
      "type": "modify",
      "old_id": "a0c8b56f15ddc8ea9fd8753ea6ba06f32ca392ff",
      "old_mode": 33188,
      "old_path": "pkgs/jni/pubspec.yaml",
      "new_id": "57df539bc49453888f252bfab6af2a380fbcdc89",
      "new_mode": 33188,
      "new_path": "pkgs/jni/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "d0c3ee6cc91cc6eb4af465c9d1f91c89de247f20",
      "old_mode": 33188,
      "old_path": "pkgs/jni/src/CMakeLists.txt",
      "new_id": "2cdb3f724d54f042636399e11f89c6061a6a138b",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "6673edee1be03e30149ad2115d3a231d40223e59",
      "old_mode": 33188,
      "old_path": "pkgs/jni/src/dartjni.c",
      "new_id": "6ef1dcf1cf8d88f60148a8c0ec2f2e9e6a21cb41",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/dartjni.c"
    },
    {
      "type": "modify",
      "old_id": "12e38b972765e6d482da9dbded3aa6cfda43dd5f",
      "old_mode": 33188,
      "old_path": "pkgs/jni/src/dartjni.h",
      "new_id": "39b70bd8f4ab6ee83281928d03f24df5f8831c6e",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/dartjni.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2b10262f8ba9325e711718b3aa5f940ddbd4c800",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0e68d5ccb8fe05c28ba51a76eef11412752734f6",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/analyze_snapshot_api.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cc647976c9d1848e057c60e80fa703f3fe397d26",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/bin/dart_io_api.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "741447a06772c9d4e7d8863ef9143cc63e53b274",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/dart_api.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c4a68f44494d8daf23d3f3024f0fe2369dc78080",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/dart_api_dl.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "804b2811cd6d10dd873037e8341bf8cff5324fca",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/dart_api_dl.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e565ebf6ee95c579c09fda626312a0795f72d495",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/dart_embedder_api.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "318a4b735d2db52ed62a69884d54d69eb5ad21b7",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/dart_native_api.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "90687f6012b7187345a1ae218bfbf6f3d6f802f6",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/dart_tools_api.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b3b4924392e047a256444747d266ca1f2a599600",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/dart_version.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e4a568931489d246ed79aaef227778a8c039a1d5",
      "new_mode": 33188,
      "new_path": "pkgs/jni/src/include/internal/dart_api_dl_impl.h"
    },
    {
      "type": "modify",
      "old_id": "bbf437b98f8f7c97dc0e9a43fa38b4999c8d788e",
      "old_mode": 33188,
      "old_path": "pkgs/jni/test/jni_test.dart",
      "new_id": "a40ba813cba1e7301c89a7bb8b51d7957b5dff71",
      "new_mode": 33188,
      "new_path": "pkgs/jni/test/jni_test.dart"
    },
    {
      "type": "modify",
      "old_id": "b5d1bff55d2796a3ef1429ddf6e1efb9d60f2062",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/README.md",
      "new_id": "d599e7caaa6c3d97ddea4e136cf0e53643f1bb6b",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/README.md"
    },
    {
      "type": "modify",
      "old_id": "a07a9d0db54eed5a1ac7426d3235739bb3113416",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/README.md",
      "new_id": "5b0bfe6dec30fe66c93813c9559cfca78d193c57",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/README.md"
    },
    {
      "type": "modify",
      "old_id": "6929631cce2048fb87298c6d77adc95c3c302690",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/in_app_java/lib/android_utils.dart",
      "new_id": "082b10514e0897a12453ee93833f665eb7e88f4f",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/in_app_java/lib/android_utils.dart"
    },
    {
      "type": "modify",
      "old_id": "12e38b972765e6d482da9dbded3aa6cfda43dd5f",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h",
      "new_id": "39b70bd8f4ab6ee83281928d03f24df5f8831c6e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/in_app_java/src/android_utils/dartjni.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "96486fd9302436d1f5334df3e5240c1ea252e7e9",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "227641921237d8d72759060a6397897da1ab8a6a",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/.metadata"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2a915c81c85446bfecff8c7e57d69620f74ac179",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f9b303465f19b5fbf5ec669cd083c9cc38ecda9a",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/analysis_options.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "161bdcdaf88c7677998668a28405642a8ff58e09",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/android/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "862afafe4b6f343c0745dc946d00bebabc0d50d5",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/android/build.gradle"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e0a5b1a3203a5ab21507c4ad27fb9857721c96f",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/android/settings.gradle"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d7d511a8ba32e034748ba0f8b69e195b1e144b3e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/android/src/main/AndroidManifest.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "531f899b45c5fc42bf72b64d63436dc0cc42624f",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/android/src/main/kotlin/Example.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "24476c5d1eb55824c76d8b01a3965f94abad1ef8",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b510dd9e22a71193f435d812f97eebedeb810fd8",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/.metadata"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2b3fce4c86a5950a1e71d64c4915a6151a6fab37",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "61b6c4de17c96863d24279f06b85e01b6ebbdb34",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/analysis_options.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6f568019d3c69d4966bb5a0f759980a1472afc1e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f371e650f57836698fe1ff64f5ad0d80e1357350",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/build.gradle"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0d1fc86d2fc9aa73f08dcf1252a2f175b244879e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/debug/AndroidManifest.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9059f10e2c3ecd8f2d3800e9a9a25d5d6d9296eb",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/AndroidManifest.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4826f822eaa833d9f9eeb6466e5cbbc75e1b1df1",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/kotlin/com/example/kotlin_plugin/example/MainActivity.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f74085f3f6a2b995f8ad1f9ff7b2c46dc118a9e0",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/drawable-v21/launch_background.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "304732f8842013497e14bd02f67a55f2614fb8f7",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/drawable/launch_background.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db77bb4b7b0906d62b1847e87f15cdcacf6a4f29",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "17987b79bb8a35cc66c3c1fd44f5a5526c1b78be",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "09d4391482be68e9e4a07fab769b5de337d16eb1",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d5f1c8d34e7a88e3f88bea192c3a370d44689c3c",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4d6372eebdb28e45604e46eeda8dd24651419bc0",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "06952be745f9fa6fa75196e830d9578eb2ee631d",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/values-night/styles.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb1ef88056edd1caf99a935e434e7ff6943a0ef6",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/main/res/values/styles.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2c06d9bc195b9f8f73112854b77fa80158519249",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/app/src/profile/AndroidManifest.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "58a8c74b1474314872720da1c0de0d755ccb3a59",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/build.gradle"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "94adc3a3f97aa8ae37ba567d080f94f95ee8f9b7",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/gradle.properties"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c472b99c6f3501ff93513bcdf39dabe4f236a55",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/gradle/wrapper/gradle-wrapper.properties"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "44e62bcf06ae649ea809590f8a861059886502e8",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/android/settings.gradle"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "df87f6e7a00f5df46a12341a5a2c3fb8c5b86517",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4292ba976adec98a4fbfd5197429ec77340069bd",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/example/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "60978f56fe9a93bfbd8355881aaf0d32ad0c35cd",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/jnigen.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e5c8331a685d9b8129278b79688b6e5924f6c4cc",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5919c221be03b63e80918b2857cfdc2534d86692",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f6b5916c9bc0462e9624376a45ea2a148276eca2",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a256c2f0970964fdca6af1fb4b3b996e8e253a43",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/src/.clang-format"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "78d9dca2c8ff22689a4b4fccadd1708faa30f3ba",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/src/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39b70bd8f4ab6ee83281928d03f24df5f8831c6e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/src/dartjni.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "77075ceb220aabb7c01d060305dc64fc7e107e8f",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/src/kotlin_plugin_bindings.c"
    },
    {
      "type": "modify",
      "old_id": "035b29af7db27c3547e8544fd1a0c9e9519dd77c",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/notification_plugin/README.md",
      "new_id": "e1b3af5d5f48cde236891fc70785c169629233db",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/notification_plugin/README.md"
    },
    {
      "type": "modify",
      "old_id": "a8ccd100f2a6fd5de6d39fb13508c73174970332",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/notification_plugin/lib/notifications.dart",
      "new_id": "853f2a9979ffb0c3283896bfd80cd9ee672ab969",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/notification_plugin/lib/notifications.dart"
    },
    {
      "type": "modify",
      "old_id": "12e38b972765e6d482da9dbded3aa6cfda43dd5f",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/notification_plugin/src/dartjni.h",
      "new_id": "39b70bd8f4ab6ee83281928d03f24df5f8831c6e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/notification_plugin/src/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "f32c1190c003e91ef6189c46fad6d14ede6cbd29",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart",
      "new_id": "3ff6a53661b17156b38818e2f1132ce61c184f27",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart"
    },
    {
      "type": "modify",
      "old_id": "46928c010823caf37c189edb22c5154be1bdc5f9",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart",
      "new_id": "0ea6ad6b69cfa684abc475aba0b512966882ab55",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart"
    },
    {
      "type": "modify",
      "old_id": "e442778ffb74e648cf7ef251234e107541f531c9",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart",
      "new_id": "2094a0b41d8d00f344df5281defe41c91b8a85c0",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart"
    },
    {
      "type": "modify",
      "old_id": "12e38b972765e6d482da9dbded3aa6cfda43dd5f",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h",
      "new_id": "39b70bd8f4ab6ee83281928d03f24df5f8831c6e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/src/third_party/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "dc0f5a477b5734084cef97d8f1c3286051867810",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/java/src/main/java/com/github/dart_lang/jnigen/apisummarizer/disasm/AsmTypeUsageSignatureVisitor.java",
      "new_id": "3c52c10451f343c98e42cff362d3e04374f2bf1d",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/java/src/main/java/com/github/dart_lang/jnigen/apisummarizer/disasm/AsmTypeUsageSignatureVisitor.java"
    },
    {
      "type": "modify",
      "old_id": "8a989d37350725353dad373e0fce2b06ccda7f16",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/c_bindings.dart",
      "new_id": "488e3d8edbcc4b271f03025ba8b5be18327c0084",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/c_bindings.dart"
    },
    {
      "type": "modify",
      "old_id": "19fba1139be0343bf8a1eb47f07b7a67c805cc8e",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/common.dart",
      "new_id": "480a038bcab2767a0951274ce8e5e2d1e9518ee1",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/common.dart"
    },
    {
      "type": "modify",
      "old_id": "e9d58c04517a3c71e75bc14ecc907b90b37f788d",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/dart_bindings.dart",
      "new_id": "d1ad5763935360ddc0e2c7f3f9a743d477758e93",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/dart_bindings.dart"
    },
    {
      "type": "modify",
      "old_id": "acc6f2b57afec73b21b414e5ea2f6e7e344562ad",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/preprocessor.dart",
      "new_id": "0003f223f04fd778fb12bbe58fdca4240a285c1b",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/preprocessor.dart"
    },
    {
      "type": "modify",
      "old_id": "46f168b4b06ef41bb2ef014f30dfd56b137b4c2c",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/pure_dart_bindings.dart",
      "new_id": "67ceeed848d6e1fa8183e2d0d673c20ebd27a241",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/pure_dart_bindings.dart"
    },
    {
      "type": "modify",
      "old_id": "c32f82479682c72c7d8436d812ecee16d8225ddc",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/config/config_types.dart",
      "new_id": "9918b06dd84dfd5b0c030784c17766c108d579ef",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/config/config_types.dart"
    },
    {
      "type": "modify",
      "old_id": "85269c2b426acf4fb36a5b51bbf4a2b0a44131f4",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/elements/elements.dart",
      "new_id": "1edefc4e46b70c65143b2f6101836d05232dc6a9",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/elements/elements.dart"
    },
    {
      "type": "modify",
      "old_id": "68f91d6eb9794040a875f20df352b70357c9bd0b",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/elements/elements.g.dart",
      "new_id": "64e60f74a31b93c05b5ee77db76e27e8c6adc3cc",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/elements/elements.g.dart"
    },
    {
      "type": "modify",
      "old_id": "73619152d6acff42484b17929cf409feff8f29f2",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/writers/files_writer.dart",
      "new_id": "79904f049f9af5b2a935b41ab3e72d5c7d4d66b7",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/writers/files_writer.dart"
    },
    {
      "type": "modify",
      "old_id": "8d8e5c745ed24e3c6f3d7c8da4272beb18709700",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/writers/single_file_writer.dart",
      "new_id": "438f867e5a8b38a582a5c7d00066f8a28f0ab84c",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/writers/single_file_writer.dart"
    },
    {
      "type": "modify",
      "old_id": "0ac0eb516b0db22e10624af9d9b6168c58a8c59a",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/pubspec.yaml",
      "new_id": "b491b181ee039bc8b85385b749e673feea85867d",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6468101455d5aeb007d1234eda8844d9afb03658",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/.gitignore"
    },
    {
      "type": "modify",
      "old_id": "772d034094d2eca3965f44c4201b89b572012324",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/bindings_test.dart",
      "new_id": "3c1cd9f6483cd5ea56dac6411c6b09afac7c588e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/bindings_test.dart"
    },
    {
      "type": "modify",
      "old_id": "be5fc9f2916a9d2f6f9a822f9d180d90de6e8084",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonFactory.dart",
      "new_id": "2cb23c07e238bb9fb7f2e585a2a46a22cf2680b2",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonFactory.dart"
    },
    {
      "type": "modify",
      "old_id": "2e1305edb2a0cb120c531042eef1145cc67d2937",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonParser.dart",
      "new_id": "4f453370dc58cefc141b4bb37a0fc0748c6409a2",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonParser.dart"
    },
    {
      "type": "modify",
      "old_id": "e3aa9b6bd0d13ecac83d5f42fcb8668d4fcb95c6",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonToken.dart",
      "new_id": "8c3bc75c93eb5bf9a27e172c3010113bd4c5f7e1",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonToken.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39de10f73f26e0c583c0f21f58c30ae0ce2a1c44",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8f877aebe4f52f9380b2cccd61e37f3e537dde83",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/generate.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ee136e865fbc19dbe35f484bc7e905db03bcb469",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/generated_files_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "37a1bfc8ee9b578163cffca1479743f667050a80",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/jni.jar"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b32d4ed1aa3d5476e04b4ed7f5d42653769b9c66",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/kotlin/pom.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ffd43769e137d8ebf5ec6255c037e354e8cc176d",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/kotlin/src/main/kotlin/com/github/dart_lang/jnigen/SuspendFun.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aaf5b7e935c3f271a98908005f031420a3ae2133",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/lib/kotlin.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a256c2f0970964fdca6af1fb4b3b996e8e253a43",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/src/.clang-format"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3889f546af8b18870456284988dc7c3ff2910ee1",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/src/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39b70bd8f4ab6ee83281928d03f24df5f8831c6e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/src/dartjni.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7b1426c268971df0f5bba8d163bf9590166a59ea",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/src/kotlin.c"
    },
    {
      "type": "modify",
      "old_id": "0f28fed8f82e9e6601bd3974ba1f6a4772b91f6f",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/regenerate_examples_test.dart",
      "new_id": "b49da06e00cdb2932ee0b64aba5670b6f035c6c6",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/regenerate_examples_test.dart"
    },
    {
      "type": "modify",
      "old_id": "aa79dbe199032d84c7a7ada044586284d5d10df3",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/simple_package_test/lib/simple_package.dart",
      "new_id": "0f6841c4899311232291a0b8a288ca52794110a5",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/simple_package_test/lib/simple_package.dart"
    },
    {
      "type": "modify",
      "old_id": "12e38b972765e6d482da9dbded3aa6cfda43dd5f",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/simple_package_test/src/dartjni.h",
      "new_id": "39b70bd8f4ab6ee83281928d03f24df5f8831c6e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/simple_package_test/src/dartjni.h"
    },
    {
      "type": "modify",
      "old_id": "df6b1b9e85337105e0a5faebc59015082d44f3dd",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/test_util/test_util.dart",
      "new_id": "51696847b2e51c3aa1dfc9d3d1c97f3c405724d6",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/test_util/test_util.dart"
    },
    {
      "type": "modify",
      "old_id": "b99fb019f81df7322ec069069d1c40b80d9a81d9",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/tool/regenerate_all_bindings.dart",
      "new_id": "19b764287d5a3d8e4c451a136b9721c92d0429f1",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/tool/regenerate_all_bindings.dart"
    }
  ]
}
