)]}'
{
  "commit": "af0ee4fdfd0956a50a387bd6b1a15e561c9d45a2",
  "tree": "7b52e9c1a0695a0aeb30fc76dcfde4321981be10",
  "parents": [
    "b7db0faf42c7f5290d75583bf12bf42a32b30d8f"
  ],
  "author": {
    "name": "Hossein Yousefi",
    "email": "yousefi@google.com",
    "time": "Wed Apr 12 16:11:19 2023 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Apr 12 16:11:19 2023 +0200"
  },
  "message": "[jnigen] Type inference for generics (https://github.com/dart-lang/jnigen/issues/236)\n\nType parameters are now named parameters instead. This allows us to toggle whether or not they\u0027re \"required\". A type parameter is not required if we can find it somewhere in the list of arguments. For example in `\u003cT\u003e f(ArrayList\u003cT\u003e arr)`, `T` can be inferred because it\u0027s also the element type in the `ArrayList`. There might be multiple places where a certain type parameter `T` is found within the arguments. In that case we choose the lowest common super type of all the cases.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "92f05b4f1d077bd12124d4d70774026a80b2e666",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/jarray.dart",
      "new_id": "8b0aead19c2f2bed4cccb1c2e406cc356ce7c3e9",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/jarray.dart"
    },
    {
      "type": "modify",
      "old_id": "7477c55bf352a8ddd48d6f3e0dadf1a986d7f08b",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/jobject.dart",
      "new_id": "dff8fda238994af057f904e4a8c80dfe36379a43",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/jobject.dart"
    },
    {
      "type": "modify",
      "old_id": "5746e23382a2c1bd315a8fd23e9784cabe2b9754",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/jstring.dart",
      "new_id": "9d02df9e237eabae5f0ae284452483344e63b62c",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/jstring.dart"
    },
    {
      "type": "modify",
      "old_id": "07102e894f21b3c1387cf0d90f29f173a569d209",
      "old_mode": 33188,
      "old_path": "pkgs/jni/lib/src/types.dart",
      "new_id": "9c0cb4968546d0fe7bf1b2b37d3c6a5c3fcda24f",
      "new_mode": 33188,
      "new_path": "pkgs/jni/lib/src/types.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0f7f5bfccec4c45709c4661c8a29af01b1a42659",
      "new_mode": 33188,
      "new_path": "pkgs/jni/test/type_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d47aa13d3fd02053417e9dff334cc2ac6ac3d64c",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/CHANGELOG.md",
      "new_id": "1516220f24af47429fd5188ec6e101dbd2411920",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "3faba5b5536ec7316766878928e1b1496469e1a9",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/in_app_java/lib/android_utils.dart",
      "new_id": "5925b92516495f33ac4a75c4b70c568e2e9f1036",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/in_app_java/lib/android_utils.dart"
    },
    {
      "type": "modify",
      "old_id": "f4354283a48f7b560414acaa9a5b3c95e5bdcc68",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/in_app_java/lib/main.dart",
      "new_id": "7765b9c1a4190fcb3d49bce97f5d559d9ef472e2",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/in_app_java/lib/main.dart"
    },
    {
      "type": "modify",
      "old_id": "b6a9bcaf9017dddef5eeced263df29f3db8a5bde",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart",
      "new_id": "3485f937e88b700171d4447c21e2d176422ba649",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart"
    },
    {
      "type": "modify",
      "old_id": "7d93c7cf84d23e4e714694875c2010be4bcd651a",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/notification_plugin/lib/notifications.dart",
      "new_id": "5a4d5591a1fe3ec4d853760447a9fad9bd5bf579",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/notification_plugin/lib/notifications.dart"
    },
    {
      "type": "modify",
      "old_id": "ebafa96f30e9532082ba1af5182ede73057f56bd",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart",
      "new_id": "ec0d86036a449375f771de0f3e542532faa6f778",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart"
    },
    {
      "type": "modify",
      "old_id": "bcb2655420e8c969a4e385da431e2881d3c916d2",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart",
      "new_id": "90134bc21df0b9c1f191e71cfae49be0873242f6",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart"
    },
    {
      "type": "modify",
      "old_id": "ccf668b971258760f28cec87ec914037212e7ec6",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart",
      "new_id": "ee0339135bf5904fc4fc5802b9ea3013aca320f2",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart"
    },
    {
      "type": "modify",
      "old_id": "56fff02a6905b2564932415bdd38be8bb6899058",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/dart_generator.dart",
      "new_id": "58561f9eba4cd6676c22b3b6b2499443152b406c",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/dart_generator.dart"
    },
    {
      "type": "modify",
      "old_id": "88beefd22e2052b9fb45760c79f26506ebd42445",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/excluder.dart",
      "new_id": "1568bd3ec7a135d27d7ebf237e3cfc501bcb83bd",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/excluder.dart"
    },
    {
      "type": "modify",
      "old_id": "f4fe617bb93b12837841bea530aea5b195b5faff",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/linker.dart",
      "new_id": "e50d4378220188e8cea23e6f257814aaf3df3faf",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/linker.dart"
    },
    {
      "type": "modify",
      "old_id": "e9fbda924f644971f32d2fff591edaf644e4c3ed",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/renamer.dart",
      "new_id": "4f1c440902a463594d89daa643062c5103ab92b1",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/renamer.dart"
    },
    {
      "type": "modify",
      "old_id": "cc7a45eb4ba38691e40e53eaec20dd641b07b8cc",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/resolver.dart",
      "new_id": "b0c82303c90e0586bafdf0de3425e8dcb7440da3",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/resolver.dart"
    },
    {
      "type": "modify",
      "old_id": "8454cacc9d247dfd43535653f4c450413a491ce6",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/bindings/visitor.dart",
      "new_id": "c2bf9e65a5c8d7661db111e26d17892a3797cf19",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/bindings/visitor.dart"
    },
    {
      "type": "modify",
      "old_id": "73476650d0dbcf96f35ed006ce10a6765c782097",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/lib/src/elements/elements.dart",
      "new_id": "4c3ce2afba965fde057beae9fb9e13219d6a06eb",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/lib/src/elements/elements.dart"
    },
    {
      "type": "modify",
      "old_id": "2a3c7315144f5cbf51f11b540540ac198b91eeb5",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/pubspec.yaml",
      "new_id": "48092a88a5caf69c7fbf082e078d16400cb40dc4",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/pubspec.yaml"
    },
    {
      "type": "modify",
      "old_id": "3c1cd9f6483cd5ea56dac6411c6b09afac7c588e",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/bindings_test.dart",
      "new_id": "107c24d2ce3b189532a6f3d65942e24c575b0057",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/bindings_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4ad2eb8ccb66f4c2d662a5bbfc17e2347aa7b720",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/dart_generator_test.dart"
    },
    {
      "type": "modify",
      "old_id": "7ce9e774ae20634a6f6e7cc569109240d6f27cbd",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonFactory.dart",
      "new_id": "2ceb3242ba3a315eaecc5a408ea78940fab862f2",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonFactory.dart"
    },
    {
      "type": "modify",
      "old_id": "1f71c76d179d5826d0c9cb6442b0834c48475160",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonParser.dart",
      "new_id": "e8caa42e3e7f0737468be580715556e71c4fda66",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonParser.dart"
    },
    {
      "type": "modify",
      "old_id": "6f3e8b4935558f78d98a1cfb965ae0c0a31061e5",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonToken.dart",
      "new_id": "2a88806e979f431f7263ef47edebc43810561964",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/jackson_core_test/third_party/lib/com/fasterxml/jackson/core/JsonToken.dart"
    },
    {
      "type": "modify",
      "old_id": "5d11a17349b25840c9e3ab6a429dcca57dbd61ed",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/kotlin_test/lib/kotlin.dart",
      "new_id": "094aa46f6f5d67afb72418e6b3ddde793dc0438e",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/kotlin_test/lib/kotlin.dart"
    },
    {
      "type": "modify",
      "old_id": "fc85a3d07cd5d6f10cc223db5cf9786c3e578b42",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/simple_package_test/java/com/github/dart_lang/jnigen/generics/MyStack.java",
      "new_id": "c4e2d06f4811da942dccc06ee27a3efe2f4df1b9",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/simple_package_test/java/com/github/dart_lang/jnigen/generics/MyStack.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "05f9365e44678db11f93eccf503a9b060918f21b",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/simple_package_test/java/com/github/dart_lang/jnigen/generics/StringMap.java"
    },
    {
      "type": "modify",
      "old_id": "aca99d9cab784f847499784fdae5106865b511b7",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/simple_package_test/lib/simple_package.dart",
      "new_id": "c5d1083f07bd9a33fcb48a462a92c09aaf098013",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/simple_package_test/lib/simple_package.dart"
    },
    {
      "type": "modify",
      "old_id": "e5937df54eb9974371d82de58e00ff54928c4df4",
      "old_mode": 33188,
      "old_path": "pkgs/jnigen/test/simple_package_test/src/simple_package.c",
      "new_id": "0e85ae93ad147bab5961993808a1d15018a0e0da",
      "new_mode": 33188,
      "new_path": "pkgs/jnigen/test/simple_package_test/src/simple_package.c"
    }
  ]
}
